1.勿使用:
- 读文件:
BufferedReader bf=new BufferedReader(new FileReader(File))
因为只能将数据读取到字符数组中
public int read(char cbuf[]) throws IOException { return read(cbuf, 0, cbuf.length); }
- 写文件:
PrintWriter pw=new PrintWriter(fileName);
因为只能写字符数组
public void write(char buf[], int off, int len) { try { synchronized (lock) { ensureOpen(); out.write(buf, off, len); } } catch (InterruptedIOException x) { Thread.currentThread().interrupt(); } catch (IOException x) { trouble = true; } }
因为读取的文件中可能出现特殊编码的字符,不属于可打印字符就会导致读取错误。
2.建议使用文件流读写文件:
try{
FileInputStream fis=new FileInputStream(readFile);
FileOutputStream fos=new FileOutputStream(writeFile);
}catch (FileNotFoundException e) {
e.printStackTrace();
}
byte[] byteArray = new byte[1024];
int byteLength= 0;
try{
while ((byteLength = fis.read(byteArray)) != -1) {
fos.write(byteArray,0,byteLength);
}
} catch (IOException e) {
e.printStackTrace();
}
try {
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
3.文件复制:
try{
FileInputStream fis=new FileInputStream(readFile);
FileOutputStream fos=new FileOutputStream(writeFile);
}catch (FileNotFoundException e) {
e.printStackTrace();
}
try{
Files.copy(fis, fos, StandardCopyOption.REPLACE_EXISTING)
}catch (Exception ex) {
ex.printStackTrace();
}
try{
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}