java文件读写的编码注意项:
一般往文件中写入的语句是:
File myFilePath = new File(filePath);
FileWriter resultFile = new FileWriter(myFilePath);
PrintWriter myFile = new PrintWriter(resultFile);
myFile.print(fileContent);
myFile.close();
FileWriter在写出文件时是以系统默认的编码格式输出的,因此对于一些不同编码格式容易产生乱码,尤其对于中文字符, 在使用时应格外留意。为了解决这个问题,可以使用OutputStreamWriter, 示例如下:
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(filename, true),"UTF-8");
osw.write(toStr);
这段代码就是指定输出文件filename,使用UTF-8的编码格式以append 的形式输出字符串 toStr;
另外可以参考这篇blog http://caohaigang2008.iteye.com/blog/327637
java 对文件进行插入内容(只适应于可以定位插入内容位置的情况)
我在这种情况下使用这样的编码:
有一个文件需要多次写入,写完文件内容后(文件内容很大),需要在文件最开始行的内容里面写入文件的行数;
这种情况下可以这样写:
RandomAccessFile raf = new RandomAccessFile(file,"rw");
raf.seek(pos);
raf.writeBytes(content);
raf.close();
适用这种情况的前提是:
需要能够准确的定位到需要插入内容的位置;