1

这是我使用的代码,我没有收到任何错误或警告,但文件为空,我创建了 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();
         }
     }
 }
4

2 回答 2

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 代码打开它并将其内容打印到日志或其他一些输出方法,以验证您的写入是否有效。

编辑2:读取文件

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

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

于 2012-08-31T21:50:25.500 回答
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();
于 2012-12-10T13:13:08.133 回答