无法将文本写入文件

时间:2014-09-02 16:47:52

标签: java

我想将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,只有一个符号。 有什么想法吗?

4 个答案:

答案 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