请教Unicode文件的读写
有一个Unicode文件,每行有空格(每行开始和结尾),如何去除? 
还有文件中有[ ] ,改为{ }。如何实现? 
最好有实例,谢谢啦!

解决方案 »

  1.   

    去空格可以用String类的trim方法,读取一行去除空格后在写入
    [ ] ,改为{ }可以用字符串替换。
      

  2.   


    关键是想学习一下Unicode文件的读写是如何实现的,Unicode文件不同于ANSI文件,Unicode文件是双字节,文件头还有特殊标志。不是为了单纯解决上面提出的问题(用WORD或许就可解决),是想学习JAVA语言。
      

  3.   

    Scanner试过吗?遇到什么问题了吗?
      

  4.   

    你可以自己定义个Filter流来处理,在读取时制定编码就可以了;
    做个示例吧,先是不修改读取,后展示修改后的结果:先建个unicodeFile.txt文件      aaa你好 
       学习unicode文件读取 
     [注意这个括号是要替换的]注意保存为Unicode格式。
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FilterReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.Reader;public class UnicodeFileReadDemo { public static void main(String[] args) throws IOException {
    InputStreamReader in = new InputStreamReader(new FileInputStream("yourFilePath\\unicodeFile.txt"), "Unicode");
    BufferedReader bufferedReader = new BufferedReader(in);
    String str = bufferedReader.readLine();
    while(str != null){
    System.out.println(str);
    str = bufferedReader.readLine();
    }
    bufferedReader.close();

    System.out.println("----------------");

    in = new InputStreamReader(new FileInputStream("yourFilePath\\unicodeFile.txt"), "Unicode");
    FilterUnicodeChar reader = new FilterUnicodeChar(in);
    int c;
    while((c = reader.read()) != -1){
    System.out.print((char)c);
    }
    reader.close();
    }}
    class FilterUnicodeChar extends FilterReader{ protected FilterUnicodeChar(Reader in) {
    super(in);
    } @Override
    public int read() throws IOException {
    int c = super.read();
    return c == -1 ? c : filter((char)c);
    } @Override
    public int read(char[] cbuf, int off, int len) throws IOException {
    int nLength = super.read(cbuf, off, len);
    int last = off + nLength;
    for(int i = off; i < last; i++){
    cbuf[i] = filter(cbuf[i]);
    }
    return nLength;
    }

    private char filter(char c){
    char result = '\u0000';
    switch (c) {
    case ' ' :
    case '\r':
    result = '\uFEFF';
    break;
    case '[':
    result = '{';
    break;
    case ']':
    result = '}';
    break;
    case '\n':
    result = '\n';
    break;
    default:
    result = c;
    break;
    }

    return result;
    }
    }
    运行结果:      aaa你好 
       学习unicode文件读取 
     [注意这个括号是要替换的]
    ----------------
    aaa你好
    学习unicode文件读取
    {注意这个括号是要替换的}
      

  5.   


    谢谢!我试一试。
    不知Unicode文件如何写入?
      

  6.   

    写入一个文件也和上面差不多,指定字符编码就可以了:OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("yourFilePath\\unicodeFile.txt"), "Unicode");
    out.write("      aaa你好             \r\n");
    out.write("   学习unicode文件读取  \r\n");
    out.write("[注意这个括号是要替换的]");
    out.close();