Java 文件处理文件路径

Java 文件处理文件路径,java,android,android-sdcard,android-file,Java,Android,Android Sdcard,Android File,基本上我有两个问题。我使用下面的代码来读写z文本文件 File myFile = new File("/sdcard/mysdfile.txt"); myFile.createNewFile(); FileOutputStream fOut = new FileOutputStream(myFile); OutputStreamWriter myOutWriter = new OutputStreamWri

基本上我有两个问题。我使用下面的代码来读写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();
每次我想打开或创建一个新文件时,都会创建一个新文件(如果文件已经存在,不要创建新文件)

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

Thnaks

更换

FileOutputStream fOut = new FileOutputStream(myFile);

显然,我有一个建议给你

永远不要在代码中硬编码<代码> SD卡>代码,而应考虑编写。

File myFile = new File(Environment.getExternalStorageDirectory(),"mysdfile.txt");

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

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) {
      }
}

*文件(Environment.getExternalStorageDirectory().toString()+“your/pth/here”,“tasklist.txt”)

不要使用硬编码的
/sdcard
/mnt/sdcard
,否则,由于存储设备的位置或装入点不同,应用程序将失败。要获得正确的位置,请使用

Environment.getExternalStorageDirectory();

要将内容附加到现有文件,请使用
newfileoutputstream(myFile,true)而不仅仅是
新文件输出流(myFile)-请参阅

至于

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

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

File dir=Environment.getExternalStorageDirectory()来创建它;
文件f=新文件(dir+“/subFolder1/”,xyz.txt) 1>打开或创建
您可以尝试或使用true替换模式_APPEND,如@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> 存储在我的SD卡->子文件夹1->子文件夹2中

您可以使用Environment.getExternalStorageDirectory().getAbsolutePath()获取SD卡的完整文件路径。然后单击字符串以获取所需的文件路径。例:

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

File f = new File(baseDir + File.separator  + subfolder1 + File.separator +  subfoler2, fileName);

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

Path path = Paths.get("/sdcard/mysdfile.txt");
BufferedWriter wrt = Files.newBufferedWriter(path, StandardCharsets.UTF_8, StandardOpenOption.APPEND);

首先阅读您正在使用的方法以及您正在使用的方法旁边的方法的文档。您会发现一些对象构造函数有非常明确的variationsThanks作为答案,但这总是写在文件的末尾。我想用新的文本替换旧的文本。谢谢你的回答,第一个文本真的很棒。但是写文件的问题总是写在文件的末尾。我希望用新文本替换旧文本。这不是您想要的吗?>“如果文件已经存在,请不要创建新文本”-这就是它的作用。它不会重新创建文件,因此会附加到旧内容;现在工作很好。非常感谢你。
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "myFile.txt";

File f = new File(baseDir + File.separator  + subfolder1 + File.separator +  subfoler2, fileName);
Path path = Paths.get("/sdcard/mysdfile.txt");
BufferedWriter wrt = Files.newBufferedWriter(path, StandardCharsets.UTF_8, StandardOpenOption.APPEND);