在Android应用程序中编写和保存文件

时间:2016-10-06 18:14:18

标签: android file filewriter

尝试按下按钮Save_btn时写入文件但是,当我运行应用程序时,它运行顺畅,没有错误,但文件无处可寻。

我正在尝试写入设备的内部存储空间。正在编写的文本位于edittext字段中。我希望将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();
                                        }
                                    }
                                }
    );

非常感谢任何有关如何正确写入文件的建议。

提前致谢。

3 个答案:

答案 0 :(得分:1)

将此代码替换为您的代码:

    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 / [您的文件夹] / [您的textFileName]
  • 上创建文件
  • 如果文件名相同,它总是删除你的文件,所以你应该为每个文件名获取唯一的名称。(你可以在文件名中包含日期和时间)

答案 1 :(得分:0)

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

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

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

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

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

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

答案 2 :(得分:0)

你应该使用

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

而不是

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

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