Java 从内部存储器编辑文件

Java 从内部存储器编辑文件,java,android,file,Java,Android,File,如何在Android应用程序中编辑位于内部存储器上的文件内容 我想删除整个内容,然后再次写入文件,而不是将数据附加到当前内容 下面是我要读写的代码: package com.example.cargom; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android

如何在Android应用程序中编辑位于内部存储器上的文件内容

我想删除整个内容,然后再次写入文件,而不是将数据附加到当前内容

下面是我要读写的代码:

package com.example.cargom;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.content.Context;


public class FileManager {

    FileOutputStream outputStream;
    FileInputStream inputStream;

    public void writeToFile(Context context, String fileName, String data) {
        try {
            outputStream = context.openFileOutput(fileName, Context.MODE_PRIVATE);
            outputStream.write(data.getBytes());
            outputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public String readFromFile(Context context, String fileName) {
        String data = "";
        int c;

        try {
            inputStream = context.openFileInput(fileName);
            while ((c = inputStream.read()) != -1) {
                data = data + Character.toString((char) c);
            }
            inputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return data;
    }
}

您可以先使用以下命令删除文件:

File f = new File(filename);
if(f.exists()){
    f.delete();
}
然后创建一个具有相同路径/名称的新路径并写入。 我假设您的文件名是设备上文件的路径


但也许我没有理解你真正的问题?

你的班级已经在做你要求的事情了。它首先擦除文件的内容,然后写入。为了进一步了解

当您使用MODE_PRIVATE启动流时,第二次尝试写入文件时,文件中已有的内容将被擦除,新内容将被写入

    outputStream = context.openFileOutput(fileName, Context.MODE_PRIVATE);
使用模式_APPEND时,已存在的内容将保留,新内容将追加到文件中

    outputStream = context.openFileOutput(fileName, Context.MODE_APPEND);
有关处理内部存储中的文件的更多参考和详细知识,我建议您观看以下三个简短视频,它们通过演示对您进行了详细描述


希望有帮助!还有其他问题,请在下面进行评论。

有什么问题?你是在logcat中出错了,还是它不工作了?你的代码没有将数据附加到现有文件中,而是在我能看到的范围内先擦除文件。哦,是的,我能看到。非常感谢。此外,代码中没有任何内容可以编辑。您没有编辑读取的数据。您正在使用我们不知道的数据编写一个新文件。这与编辑没有多大关系。@AlonsoArellano如果回答了您的问题,请单击答案旁边的勾号接受答案,这样其他用户就可以了解该问题了。@codePG请重新阅读该问题,并意识到您根本没有解决该问题。@greenapps抱歉声称我回答了这个问题。在这个问题中,我可以看到它是一个用来管理文件读写的类。我希望至少我已经澄清了可以使用的不同模式,以及它们的用途。我有一种感觉,解释上述内容可以让他/她区分不同的模式。谢谢