即使刷新了写入器,BufferedWriter也没有写入.txt文件

时间:2012-08-31 21:44:23

标签: java android writer

这是我使用的代码,我没有错误或警告,但文件是空的,我创建了aq.txt文件并将其放在工作区中,它也显示在项目中。我确定这是一个愚蠢的东西我不知道但是我无法理解它。此外,我尝试了所有其他问题,但建议的答案是关闭流和/或冲洗它,我做的两个,但他们似乎没有工作。任何帮助将不胜感激!

     Writer writer = null;
 FileOutputStream fos= null;
 try{


     String xyz= "You should stop using xyz";
     writer = new BufferedWriter(new OutputStreamWriter(
         new FileOutputStream(getFilesDir()+File.separator+"aq.txt")));
     writer.write(xyz);
     writer.flush();
 }    
 catch(IOException e) {
     System.out.println("Couldn't write to the file: " + e.toString());
 }
 finally{
     if(writer != null){
         try {
             writer.close();
         }
         catch(IOException e1) {
             e1.printStackTrace();
         }
     }
 }

2 个答案:

答案 0 :(得分:2)

试试这样:

fos = openFileOutput(FILE_NAME, Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(fos));
writer.write(xyz);
writer.flush();

Context类提供了一个帮助方法Context.openFileOutput(String name, int mode),它将为您的应用程序Files目录中的文件返回FileOutputStream。

我没有看到任何直接原因导致你的方式不起作用,但我知道我已经成功地使用了这种方式。

编辑:重新阅读您的问题后,我认为您对此文件的写入位置感到困惑。它不会写入工作区内的项目文件夹。这将被写入您运行它的Android设备的内部存储。每个应用程序都有自己的存储空间块位于\data\data\[package-name]\Files\您的文件将被写入那里,因此您将无法立即打开它并查看其内容(除非您的设备已植根。你将不得不用java代码打开它并将其内容打印到Log或其他输出方法,以验证你的写入是否有效。

编辑2:阅读文件

FileInputStream in = openFileInput(FILE_NAME);
InputStreamReader inputStreamReader = new InputStreamReader(in);
BufferedReader br = new BufferedReader(inputStreamReader);
String line = br.readLine();
Log.d("TAG", line);

这将读取并向日志输出文件的第一行。

答案 1 :(得分:0)

这肯定有用:

File file = new File("fileName");

FileWriter fileWriter = new FileWriter(file);

BufferedWriter writer = new BufferedWriter(fileWriter);

writer.write("data to write in the file.");

writer.flush();