0

基本上我有两个问题。我正在使用下面的代码来读取和写入 z 文本文件。

    File myFile = new File("/sdcard/mysdfile.txt");
    myFile.createNewFile();
    FileOutputStream fOut = new FileOutputStream(myFile);
    OutputStreamWriter myOutWriter = 
                            new OutputStreamWriter(fOut);
    myOutWriter.append("my text here");
    myOutWriter.close();

每次我想要这个 OPEN_OR_CREATE 时都会创建一个新文件(如果文件已经存在,请不要创建一个新文件)

我的第二个问题是如何更改路径“/sdcard/mysdfile.txt”我希望这个文件存储在我的 sdcard -> subFolder1 -> SubFolder2

纳克斯

4

6 回答 6

0

代替

FileOutputStream fOut = new FileOutputStream(myFile);

FileOutputStream fOut = new FileOutputStream(myFile, true); //true means append mode.

Appart 从那我有一个建议给你。

永远不要/sdcard在代码中硬编码,而是考虑编写。

File myFile = new File(Environment.getExternalStorageDirectory(),"mysdfile.txt");
于 2012-11-21T11:00:15.107 回答
0

尝试我的解决方案写入文本文件的末尾

private void writeFile (String str){
      try {
          File f = new File(Environment.getExternalStorageDirectory().toString(),"tasklist.txt");
          FileWriter fw = new FileWriter(f, true);

          fw.write(str+"\n");
          fw.flush();
          fw.close();
      } catch (Exception e) {
      }
}

*File(Environment.getExternalStorageDirectory().toString()+"your/pth/here","tasklist.txt");

于 2012-11-21T11:01:20.900 回答
0

不要使用硬编码/sdcard,否则/mnt/sdcard您的应用程序将失败,因为设备在该存储的位置或挂载点上有所不同。要获得正确的位置,请使用

Environment.getExternalStorageDirectory();

请参阅此处的文档

要将内容附加到现有文件,请使用new FileOutputStream(myFile, true);而不是仅在此处new FileOutputStream(myFile);查看该构造函数的文档

至于

如何更改路径“/sdcard/mysdfile.txt”

/sdcard除了如上所述摆脱之外,只需将子文件夹添加到路径: MyFolder1/MyFolder2/mysdfile.txt. 请注意,这些文件夹必须存在,否则路径将无效。您始终可以通过调用来创建它myFile.mkdirs()

于 2012-11-21T11:01:53.873 回答
0
File dir = Environment.getExternalStorageDirectory();

File f = new File(dir+"/subFolder1/",xyz.txt); <-- HOW TO USE SUB FOLDER

if(file.exists())
{
     // code to APPEND
}
else
{
     // code to write new one
}
于 2012-11-21T11:03:22.460 回答
0

1> OPEN_OR_CREATE 您可以尝试或可以将 MODE_APPEND 替换为 true 就像@Vipul 的建议一样

FileOutputStream fOut = openFileOutput(your_path_file, MODE_APPEND);

//it means if the file is exist the content you want write will append into it.

2> 存储在我的 sdcard -> subFolder1 -> SubFolder2

您可以使用 Environment.getExternalStorageDirectory().getAbsolutePath() 获取 SDCard 的完整文件路径。然后连接字符串以获取您想要的文件路径。前任:

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "myFile.txt";

File f = new File(baseDir + File.separator  + subfolder1 + File.separator +  subfoler2, fileName);
于 2012-11-21T11:07:34.410 回答
0

在 Java 7 中,我们可以这样做:

Path path = Paths.get("/sdcard/mysdfile.txt");
BufferedWriter wrt = Files.newBufferedWriter(path, StandardCharsets.UTF_8, StandardOpenOption.APPEND);
于 2012-11-21T11:13:16.720 回答