【问题标题】:To save file in a directory of Internal Storage将文件保存在内部存储目录中
【发布时间】:2023-03-14 23:01:01
【问题描述】:

这是MainActivity.java的代码,用于在应用程序的内部存储中保存一个名为filename.txt的文件,它工作正常。

package com.bla.smthing;


import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class MainActivity extends Activity {

    EditText textmsg;
    static final int READ_BLOCK_SIZE = 100;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textmsg=(EditText)findViewById(R.id.editText1);
    }

    // write text to file
    public void WriteBtn(View v) {
        // add-write text into file
        try {
            FileOutputStream fileout=openFileOutput("mytextfile.txt", MODE_PRIVATE);
            OutputStreamWriter outputWriter=new OutputStreamWriter(fileout);
            outputWriter.write(textmsg.getText().toString());
            outputWriter.close();

            //display file saved message
            Toast.makeText(getBaseContext(), "File saved successfully!",
                    Toast.LENGTH_SHORT).show();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // Read text from file
    public void ReadBtn(View v) {
        //reading text from file
        try {
            FileInputStream fileIn=openFileInput("mytextfile.txt");
            InputStreamReader InputRead= new InputStreamReader(fileIn);

            char[] inputBuffer= new char[READ_BLOCK_SIZE];
            String s="";
            int charRead;

            while ((charRead=InputRead.read(inputBuffer))>0) {
                // char to string conversion
                String readstring=String.copyValueOf(inputBuffer,0,charRead);
                s +=readstring;
            }
            InputRead.close();
            textmsg.setText(s);


        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

我可以通过 Android Studio 的文件资源管理器查看该文件。如何将文件保存在 files/Somefolder/otherfolderchild/filename.txt 等目录中?

目前保存为files/filename.txt 我需要为此创建额外的父文件目录吗?

【问题讨论】:

    标签: android file stream android-file android-internal-storage


    【解决方案1】:

    试试这个可能对你有帮助。 以上棉花糖版本请检查写入权限。

    public void saveToExternalStorage() {
    String fullPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/directoryName";
    try
    {
        File dir = new File(fullPath);
        if (!dir.exists()) {
        dir.mkdirs();
        }
        OutputStream fOut = null;
        File file = new File(fullPath, "fileName.txt");
        if(file.exists())
            file.delete();
        file.createNewFile();
        fOut = new FileOutputStream(file);
        fOut.flush();
        fOut.close();
    }
    catch (Exception e)
    {
        Log.e("saveToExternalStorage()", e.getMessage());
    }
    

    }

    【讨论】:

    • 你好 karthick,实际上我试图将文件保存在内部存储中,例如通过我的代码我将我的文本文件保存为“data/data/com/bla/something/files/filename.txt”但我想将它保存为“data/data/com/bla/something/files/folder/otherfolder/filename.txt”这是内部存储
    • 我使用了这一行 "File filesDir = MainActivity.this.getFilesDir(); " and " final File buildDir = initDir(filesDir, "folder"); File file = new File(buildDir, "filename ");"而是 "String fullPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/directoryName";"正如我在标题中提到的将文件存储在内部存储目录中。请指正谢谢
    • function --->File initDir(File parent, String childName){ File dir = new File(parent, childName); if(!dir.exists()) dir.mkdir();返回目录; }
    • if(!dir.exists()) dir.mkdir(); return dir; 错误代码!检查 mkdir() 和 mkdirs() 的返回值。更好:if(!dir.exists()) {if ( !dir.mkdirs()) return null; return dir; }
    猜你喜欢
    • 2012-10-21
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 2012-06-08
    • 2023-03-10
    • 1970-01-01
    • 2012-03-16
    • 2013-02-19
    相关资源
    最近更新 更多