将文件保存到内部存储器的目录中

问题描述 投票:0回答:2

这里是“ 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的文件资源管理器查看文件。如何将文件保存在目录中。说“文件/Somefolder/otherfolderchild/filename.txt”,当前它另存为“ files / filename.txt”我是否需要为此创建其他父文件目录?

android file java-stream android-file android-internal-storage
2个回答
0
投票

尝试此代码段:

public void ReadBtn(View v) {
    //reading text from file
    try {
        File root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);
        File myDir = File(root + "/folder/folder");
        myDir.mkdirs();
        File file = File(myDir, "fileName.txt");

        try
{
    file.createNewFile();
    FileOutputStream fOut = new FileOutputStream(file);
    OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
    myOutWriter.append(data);

    myOutWriter.close();

    fOut.flush();
    fOut.close();
     textmsg.setText(s);
}
catch (IOException e)
{
    Log.e("Exception", "File write failed: " + e.toString());
} 

}

0
投票

尝试此操作可能会对您有所帮助。 对于上述棉花糖版本,请检查写入权限。

public void saveImageToExternalStorage() {
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);
    // 100 means no compression, the lower you go, the stronger the compression
    fOut.flush();
    fOut.close();
}
catch (Exception e)
{
    Log.e("saveToExternalStorage()", e.getMessage());
}

}

© www.soinside.com 2019 - 2024. All rights reserved.