【问题标题】:write a file to a folder in the android device internal storage将文件写入 android 设备内部存储中的文件夹
【发布时间】:2018-01-17 14:19:39
【问题描述】:

我在 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);

【问题讨论】:

  • 这是一个简单还是困难的问题?
  • 我在 ES 文件管理器上再次检查它的路径,它是“mnt\sdcard\Myfolder”并且文件被写入那里。我应该更仔细地测试和调试它。
  • 您询问如何将文件存储在内部存储设备上,而不是外部存储设备上
  • 这就是我的看法。我通过 Windows 10 桌面连接 android 设备。在窗口文件夹中找到设备。单击标有“内部存储”的图标,它会显示所有文件夹,包括 \MyFolder。安卓设备上ES文件管理器显示的路径,居然是“mnt\sdcard\Myfolder”

标签: android directory android-internal-storage


【解决方案1】:

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

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" />

【讨论】:

    【解决方案2】:

    从应用程序中,您无法将文件写入设备内部存储的任何位置,它必须位于应用程序的内部目录或应用程序缓存目录中。

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

    getFilesDir() 返回代表内部目录的文件 你的应用程序。

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

    你可以写:

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

    更多信息在这里:

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

    【讨论】:

      猜你喜欢
      • 2015-07-17
      • 2017-10-11
      • 2015-02-08
      • 1970-01-01
      • 2022-01-28
      • 1970-01-01
      • 2016-03-24
      • 2016-11-01
      相关资源
      最近更新 更多