【问题标题】:Where to store files for user in Android?在哪里为Android中的用户存储文件?
【发布时间】:2020-06-04 05:05:37
【问题描述】:

我必须从我的应用程序中导出文件并寻找可以保存文件的解决方案,以便用户可以打开它们。

我已经尝试过 getFilesDir().getPath() 效果很好,直到我意识到文件夹无法从真实设备(/data/user/0/com.myapplication.example/files)打开,因为 /数据路径只是应用程序的存储区域。

有哪些选择?

【问题讨论】:

  • 改用 getExternalFilesDir(null)。
  • 不需要权限吗?有没有如何获得许可的例子? ??????
  • 不需要权限。
  • getExternalFilesDir() 返回一个有用户访问权限的文件夹?那会很好。
  • until I realized that the folder can't open from a real device。目前尚不清楚您的意思是什么。在真实设备上,您也可以使用该目录。

标签: android file file-permissions


【解决方案1】:

你应该看看这里https://developer.android.com/training/data-storage 我不确定您尝试存储什么文件类型,但是您尝试使用应用程序目录而不是设备存储文件。为了解决这个问题,我会在上面的链接中再次查看媒体或文档和其他文件。如果我知道您要存储的文件类型,我将能够提供进一步的帮助。希望这对您有所帮助。

【讨论】:

  • 稍后会查看此链接。用户应该能够用相机拍摄一些照片,并且应用程序会根据一些数据创建一个 pdf。所以本质上,它应该保存图片和一个pdf文件。
【解决方案2】:

这是一个将浮点数组存储到手机外部存储的函数。在字符串名称中传递文件 name.extension。您可以修改它以导出文件。

public static void save(float[] input_array, String name)
{
    final String TAG2 = "->save()";

    String string_array = Arrays.toString(input_array);

    String fullName = Environment.getExternalStorageDirectory().getPath() + "/SercanFolder/" + name;
    String path = Environment.getExternalStorageDirectory().getPath() + "/SercanFolder";

    File folder = new File(path);
    if(!folder.exists())
    {
        folder.mkdirs();
    }

    BufferedWriter buf;

    try
    {
        buf = new BufferedWriter(new FileWriter(fullName));
        buf.write(string_array,0,string_array.length());
        buf.close();
        Log.d(TAG+TAG2, "array saved as document. ");
    }
    catch (IOException e)
    {
        Log.e(TAG+TAG2, "problems while saving the file. ");
    }

}

【讨论】:

    【解决方案3】:

    getExternalStorage().getPath() 的建议(感谢 blackapps)帮助我将 pdf 保存在一个文件夹中,该文件夹可以在文件管理器中打开。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-06
      • 1970-01-01
      • 2010-11-09
      • 1970-01-01
      • 2014-10-10
      • 1970-01-01
      相关资源
      最近更新 更多