指定文件路径

时间:2018-12-12 19:03:58

标签: java android filepath

我最近启动了我的第一个应用程序(用于心理学研究),我想创建.txt文件来记录参与者的答案。 (但现在它只是一个测试文件,只有一行“这是一个测试文件”)

我的第一个问题是我找不到应该创建的文件。我没有收到任何错误,所以我想它是在某个地方创建的。

我已阅读到文件可能位于“ data / data”文件夹中,显然,如果不扎根手机,我将无法访问(我想避免这种情况)。

我的问题是,如何修改路径,以便在“下载”文件夹中或我可以访问的任何位置创建文件?我尝试使用this.getExternalFilesDir(null)Environment.getExternalStorageDirectory()Context.getFilesDir(),但是在本地存储或SD卡上找不到我的文件。

我确实在清单中添加了WRITE_EXTERNAL_STORAGE权限,但是我不知道是否需要做其他事情。例如,我不知道是否必须为我的应用创建一个文件夹(例如那些com.domain.app文件夹),或者是否应该自动创建一个文件夹。

谢谢!我知道已经发布了类似的问题,但到目前为止,我找不到适合我的答案。如果我没有提到重要的事情,请毫不犹豫地指出,因为我的猜测是我忘记了一些非常基本的东西。

1 个答案:

答案 0 :(得分:0)

这不能直接回答您的问题,但是我认为值得一提SharedPreferences,它通常是存储应用程序数据的最简单方法,特别是因为您提到存储的数据不会太多。

SharedPreferences允许您使用putString()getString()之类的方法存储键/值对。请注意,必须在SharedPreferences编辑器上完成共享首选项的修改。

SharedPreferences sharedPrefs = context.getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE);
// Save answer
// Don't forget to call apply() at the end, or commit() to block until the write is complete
sharedPrefs.edit().putString("KEY_TO_ANSWER_1", "My answer").apply();
// Read answer
sharedPrefs.getString("KEY_TO_ANSWER_1", "Default value if not found");

如果您在整个应用程序中使用了大量此类内容,则有助于将它们保持在一起。我发现自己经常使用这种模式:

public enum Preferences {

    INSTANCE;

    private static final String PREFS_A1 = "answer1";

    private SharedPreferences mPrefs;

    private static SharedPreferences getPrefs(Context context) {
        if (INSTANCE.mPrefs == null) {
            INSTANCE.mPrefs = context.getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE);
        }
        return INSTANCE.mPrefs;
    }

    public static void setAnswer1(Context context, String answer) {
        getPrefs(context).edit().putString(PREFS_A1, answer).apply();
    }

    public static String getAnswer1(Context context) {
        getPrefs(context).getString(PREFS_A1, "No answer provided");
    }

    public static void clearAnswer1(Context context) {
        getPrefs(context).edit().remove(PREFS_A1).apply();
    }

}