【问题标题】:Android different paths returned for the same fileAndroid为同一个文件返回不同的路径
【发布时间】:2015-11-27 21:22:02
【问题描述】:

在我的代码中,您可以导入或导出 csv 文件。导出功能很好,对于文件的创建,我用这个作为路径:

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)

它返回以下路径: /storage/emulated/0/Download/File.CSV

在我的 Import 函数中,我使用 createchooser 获取文件资源管理器来查找要导入的文件。如果我选择相同的文件并使用以下代码询问路径:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
        case REQUEST_FILE_CODE:
            if (resultCode == RESULT_OK) {
                Uri uriFile = data.getData();
                Log.v("testimport", uriFile.getPath());
                File fileToImport = new File(uriFile.getPath());
                BufferedReader reader = new BufferedReader(new FileReader(fileToImport));

我收到以下路径的文件未找到错误: /document/primary:下载/StudyMemory/File.csv

为什么我会得到两条不同的路径?如何从文件资源管理器中获取 uri 的绝对路径? 提前致谢。

【问题讨论】:

  • 'LISTANGFR.csv'。这看起来是一个不同的文件。
  • '让浏览器找到要导入的文件'。不要这么想。也许是文件浏览器?
  • 我编辑了帖子以纠正错别字。

标签: android file path


【解决方案1】:

第一个'路径是文件系统路径。第二个是内容提供者路径。

当你想读取文件时,你最好打开一个输入流,比如

 InputStream is = getContentResolver().openInputSteam(uriFile);

并为您的读者使用信息流。

【讨论】:

  • 谢谢!答案有效,完美地回答了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-13
  • 1970-01-01
  • 2019-03-05
  • 1970-01-01
相关资源
最近更新 更多