我想将int写入文本文件。 我写了这段代码
public static void WriteInt(int i,String fileName){
File directory = new File("C:\\this\\");
if (!directory.exists()) {
directory.mkdirs();
}
File file = new File("C\\"+fileName);
FileOutputStream fOut = null;
try {
//Create the stream pointing at the file location
fOut = new FileOutputStream(new File(directory, fileName));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
OutputStreamWriter osw = new OutputStreamWriter(fOut);
try {
osw.write(i);
osw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
但是在输出文件中我没有int,只有一个符号。 有什么想法吗?
答案 0 :(得分:5)
您应该使用PrintWriter.print(int)
Writer.write()输出一个字符,这就是它的用途。不要被int参数类型弄糊涂。将你的osw包装在PrintWriter中,别忘了关闭它。
答案 1 :(得分:0)
osw.write(i);
此行将字符写入unicode值为i
您应该使用PrintWriter
来写整数值。
答案 2 :(得分:0)
OutputStreamWriter
是打印字符的流。
尝试使用这样的PrintWriter
:
try(FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(bw)) {
pw.print(i);
}
答案 3 :(得分:0)
我想你的问题是你希望在你的文件中找到人类可读格式的数字,但你正在使用的 OutputStreamWriter 的方法(接收 int )期望收到 char 表示。请查看Ascii table以获取 int 代表 char 的参考。
如果您真的希望用字符来编写数字,请考虑使用 PrintWriter 而不是 OutputStreamWriter 。您也可以将 int 更改为字符串( Integer.toString(i))并仍使用 OutputStreamWriter