如何将int写入我们正在读取的同一文件中?

时间:2016-04-26 13:55:32

标签: java

我正在尝试从文件中读取文件,然后在附加文件的同时将其写回。

要读取的文件有5,10,写完后,文件应该有5,10"\n" 15

但不是它有5,10"\n" SI

这是我的源代码 -

 import java.io.*;
 import java.util.*;


public class Ash  {



public static void main(String[] args) throws IOException{

File file = new File("ashray.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
Scanner input = new Scanner(reader);

    String str = input.nextLine();

    String [] sc = str.split(",");

    int x = Integer.parseInt(sc[0]);
    int y = Integer.parseInt(sc[1]);
    int z = x+y;
    input.close();

    FileWriter fw = new FileWriter(file,true);
    BufferedWriter writer = new BufferedWriter(fw);     
    writer.write(Integer.toString(z));

    fw.close();     

   }    
}

2 个答案:

答案 0 :(得分:0)

使用PrintWriter

PrintWriter writer = new PrintWriter(file, "UTF-8");
writer.println("print content here");
writer.close();

答案 1 :(得分:0)

问题是您要关闭FileWriter而不是BufferedWriter。这意味着您的应用程序正在BufferedWriter的缓冲区中以未写字符退出。

解决方案:更改

 fw.close();     

 writer.close();

关闭BufferedWriter将关闭它所包含的Writer。 javadoc这样说。

(您不需要关闭Reader。关闭Scanner会关闭它所包含的来源。此外,在这种情况下,两者都不是绝对必要的。但请参阅下文。 )

另请注意,如果这是生产代码,建议使用尝试使用资源以确保文件描述符始终处于关闭状态,而不管方法如何终止。问题是如果方法因为抛出异常而终止,则可以跳过关闭ReaderWriter堆栈的语句。这可能会在打开文件时导致资源泄漏和意外错误......稍后。