在 android 应用程序中写入和保存文件

writing and saving a file in android application

我试图在按下按钮 Save_btn 时写入文件,但是,当我 运行 应用程序时,它 运行 很顺利,没有错误,但是文件无处可去找到了。

我正在尝试写入设备的内部存储器。正在编写的文本位于编辑文本字段中。我希望将 EditText 中的这段文本写入文件

我在下面包含了我正在使用的代码;

Save_btn = (Button) findViewById(R.id.g);
    Save_btn.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View views) {
                                        TextView CodeView = (TextView) findViewById(R.id.Code_Viewer);
                                        CodeView.setText(CodeView.getText());
                                        try {
                                            String etName = CodeView.getText().toString();
                                            if (!etName.trim().equals("")) {
                                                File file = new File("/Documents/test.txt");

                                                //if file doesnt exists, then create it
                                                if (!file.exists()) {
                                                    file.createNewFile();
                                                }


                                                FileWriter fileWritter = new FileWriter(file.getName(), true);
                                                BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
                                                bufferWritter.write(etName);
                                                bufferWritter.close();
                                            }
                                        } catch (IOException e) {

                                            e.printStackTrace();
                                        }
                                    }
                                }
    );

任何关于如何正确写入文件的建议都将不胜感激。

提前致谢。

我不确定这是否可行,因为您指定的文件路径是 a) 绝对路径和 b) 指向您可能没有写入权限的目录。

File file = new File("/Documents/test.txt");

这引用了文件系统根目录中的 Documents 文件夹,而不是您的应用程序文件。

如果你想将它保存在本地以便在你自己的应用程序中使用,你可以尝试Context#getFilesDir,例如

File file = new File(context.getFilesDirectory(), "yourfile.txt");

如果您想将它保存在其他应用程序可以使用它的地方,您可能需要更复杂的方法,例如FileProvider.

你应该使用

File file = new File(context.getFilesDir(), "test.txt");

而不是

File file = new File("/Documents/test.txt");

保存到您的内部存储。您的其余代码可以保持不变。

用您的代码替换此代码:

    Save_btn = (Button) findViewById(R.id.g);
    Save_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View views) {
                TextView CodeView = (TextView) findViewById(R.id.Code_Viewer);
                CodeView.setText(CodeView.getText());
                String etName = CodeView.getText().toString();

                File dir = new File(getFilesDir(), "yourfolder");
                if(!dir.exists())
                {
                    dir.mkdirs();
                }
                String textFileName="textFile.txt";
                File file = new File(dir.getPath(), textFileName );
                if(file.exists())
                {
                    file.delete();
                }
                try {
                    FileWriter fw = new FileWriter(file);
                    BufferedWriter bw = new BufferedWriter(fw);
                    bw.write(etName);
                    bw.close();

                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }


            }
        }
    );

您应该注意以下几点:

  • 此代码将在 /data/data/[您的应用程序包名称]/files/[您的文件夹]/[您的文本文件名]
  • 上创建文件
  • 如果文件名相同,它总是会删除您的文件,因此您应该为每个文件取一个唯一的名称。(您可以在文件名中包含日期和时间)