2016-04-26 41 views
0

我试图从一个文件中读取,然后在附加它的同时写回它。如何将int写入我们正在读取的同一个文件?

要读取的文件有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();  

    }  
} 
+1

你需要关闭阅读器.. –

+1

@AnoopLL - 不,他不。关闭扫描仪将其关闭。 –

回答

0

使用PrintWriter

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

为什么我不能使用包装在缓冲作家中的filewriter? – shiwchiz

+0

你可以但你必须知道锄头缓冲写入文件。他如何转换内容。 (utf-8?ansi?) – CodeWizard

+0

可以请告诉我如何使用filewriter和缓冲写入器写入? – shiwchiz

0

的问题是,你是关闭FileWriter而非BufferedWriter。这意味着您的应用程序正在使用BufferedWriter缓冲区中的未写入字符退出。

解决方案:改变

fw.close();  

writer.close(); 

关闭BufferedWriter是要关闭它包裹Writer。 javadoc这样说。

(你并不需要关闭Reader。关闭Scanner将关闭它包裹的来源。再说,也不是绝对必要在这方面,但是见下文)。


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

+0

非常感谢先生! – shiwchiz

相关问题