java.io.File在写入文件时获取额外的char

时间:2013-07-15 14:34:54

标签: java io

为什么我在写入以下代码的文件时会获得额外的字符?如果我使用的是writeBytes(String),则下面的代码就是工作文件。那么dos.writeChars()方法有什么问题?

File fileObj = new File("student.txt");

try {

  // writing into file
  FileOutputStream fos = new FileOutputStream(fileObj);
  String msg = "This is student file";

  DataOutputStream dos = new DataOutputStream(fos);
  dos.writeChars(msg);

  //reading from file
  FileInputStream fis = new FileInputStream(fileObj);
  DataInputStream dis = new DataInputStream(fis);

  System.out.println(dis.readLine());

  for (int i = 0; ((i = dis.read()) != -1); i++) {
    System.out.println(i);
  }

  fos.close();
  dos.close();

} catch (FileNotFoundException e) {
  System.err.println("File not found!");
} catch (IOException e) {
  e.printStackTrace();
}

1 个答案:

答案 0 :(得分:1)

writeChars()使用2字节字符(UTF-16)。所以你写的每个字符都会写两个字节。

如果您希望其他编码在getBytes()上使用String并将其写为字节。