我最近启动了我的第一个应用程序(用于心理学研究),我想创建.txt文件来记录参与者的答案。 (但现在它只是一个测试文件,只有一行“这是一个测试文件”)
我的第一个问题是我找不到应该创建的文件。我没有收到任何错误,所以我想它是在某个地方创建的。
我已阅读到文件可能位于“ data / data”文件夹中,显然,如果不扎根手机,我将无法访问(我想避免这种情况)。
我的问题是,如何修改路径,以便在“下载”文件夹中或我可以访问的任何位置创建文件?我尝试使用this.getExternalFilesDir(null)
,Environment.getExternalStorageDirectory()
,Context.getFilesDir()
,但是在本地存储或SD卡上找不到我的文件。
我确实在清单中添加了WRITE_EXTERNAL_STORAGE
权限,但是我不知道是否需要做其他事情。例如,我不知道是否必须为我的应用创建一个文件夹(例如那些com.domain.app文件夹),或者是否应该自动创建一个文件夹。
谢谢!我知道已经发布了类似的问题,但到目前为止,我找不到适合我的答案。如果我没有提到重要的事情,请毫不犹豫地指出,因为我的猜测是我忘记了一些非常基本的东西。
答案 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();
}
}