为什么我在写入以下代码的文件时会获得额外的字符?如果我使用的是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();
}
答案 0 :(得分:1)
writeChars()
使用2字节字符(UTF-16)。所以你写的每个字符都会写两个字节。
如果您希望其他编码在getBytes()
上使用String
并将其写为字节。