检查内部存储上是否存在全局文件

时间:2014-08-07 20:06:43

标签: android file internal-storage

我正在尝试使用一个应用创建一个文件,并检查它是否与另一个应用存在。我试图实现的是缓存中的全局文件,可以由设备上的任何应用程序访问。我读过这个:thisthis one。但似乎我迷失了。我每次从另一个应用程序检查时都会创建新文件,第一个应用程序创建了一个文件。

private boolean doesFileExist() {
        File file = new File(this.getCacheDir().toString() + "myfile");
        if(file.exists()) {
            return true;
        }
        else return false;
    }

    private void createFileForMe() {
        File file = new File(this.getCacheDir().toString() + "myfile", "myfile");
        file.setReadable(true, false);
        Log.v("FILE", "created file");
    }

public void onCreate() {
        super.onCreate();
            if (!doesFileExist()) {
                Log.v("FILE", "FILE DOESnt EXIST");
                createFileForMe();
            } else Log.v("FILE", "FILE DOES EXIST");
    }

1 个答案:

答案 0 :(得分:0)

getCacheDir()的Android Javadoc说:

  

返回特定于应用程序的缓存目录的绝对路径   在文件系统上。

这意味着它仅适用于单个应用。相同的方法为第二个应用程序返回不同的位置。这些应用无法使用上述方法共享缓存。

您必须选择另一个位置来共享您的数据。请注意,大部分内部存储空间都受到限制。也许最好使用内置的外部存储(逻辑上是外部存储,而不是SD卡)。

<强>更新

我看到两个选项:

  • 将数据存储在公共场所的外部存储空间中,您可以阅读here
  • 使用ContentProvider将内部存储空间上的私人数据共享给其他应用,您可以阅读here