将文件写入android设备内部存储中的文件夹

时间:2018-01-17 14:19:39

标签: android directory android-internal-storage

我在android设备内部存储根目录中有一个名为MyFolder的文件夹。没有安装外部SD卡。可以使用说ES文件管理器检查该文件夹  我想写一个文件到那个目录。  我尝试以下但似乎一切都不是我想要的。那怎么应该是sd?  请帮忙。

    File sd = Environment.getExternalStorageDirectory();
    //      File sd = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)  ;
    //      File sd = new File( Environment.getExternalStorageDirectory().getAbsolutePath());
    //      File sd = Environment.getRootDirectory()  ; // system
    //      File sd = Environment.getDataDirectory()  ; 


    backupDBPath = "MyFolder/_subfolder/mydata.txt";

    File backupDB = new File(sd, backupDBPath);

2 个答案:

答案 0 :(得分:3)

如果您的目录位于应用程序的内部数据目录中,则可以编写代码。

File directory = new File(this.getFilesDir()+File.separator+"MyFolder");

        if(!directory.exists())
            directory.mkdir();

        File newFile = new File(directory, "myText.txt");

        if(!newFile.exists()){
            try {
                newFile.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        try  {
            FileOutputStream fOut = new FileOutputStream(newFile);
            OutputStreamWriter outputWriter=new OutputStreamWriter(fOut);
            outputWriter.write("Test Document");
            outputWriter.close();

            //display file saved message
            Toast.makeText(getBaseContext(), "File saved successfully!",
                    Toast.LENGTH_SHORT).show();
        }catch (Exception e){
            e.printStackTrace();
        }

从官方文件中: https://developer.android.com/guide/topics/data/data-storage.html#filesExternal

设备具有可移动(SD卡)或不可移动存储(内部共享存储)。两者都称为外部存储。假设您可以在"内部共享存储"中创建目录,您可以编写下面的代码。

File directory = new File(Enviroment.getExternalStorage+File.separator+"MyFolder");//new File(this.getFilesDir()+File.separator+"MyFolder");

注意:如果必须使用getExternalStorage,则应授予存储权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

答案 1 :(得分:0)

您无法从应用程序在设备的内部存储上随意编写文件。它必须位于内部应用程序目录或应用程序缓存中。

  

将文件保存到内部存储时,您可以获取   通过调用以下两种方法之一将适当的目录作为文件:

     

getFilesDir()返回表示内部目录的File   你的应用。

     

getCacheDir()返回表示内部的File   应用程序临时缓存文件的目录。

你可以写:

String backupDBPath = "/_subfolder/";
String fileName = "mydata.txt";
File file = new File(context.getFilesDir() + backupDBPath, filename);

此处有更多信息:

https://developer.android.com/training/data-storage/files.html