在Android中,我应该在哪里存储文件?
我有一个创建配置文件和日志文件的应用程序。我将这些存储在外部存储中,但是当我在android模拟器中尝试时,它不起作用,因为外部存储是不可写的。如果发生这种情况,我应该将文件存储在哪里 这是我的代码:在Android中,我应该在哪里存储文件?,android,file,Android,File,我有一个创建配置文件和日志文件的应用程序。我将这些存储在外部存储中,但是当我在android模拟器中尝试时,它不起作用,因为外部存储是不可写的。如果发生这种情况,我应该将文件存储在哪里 这是我的代码: private void createConfigurationFile(){ File ssConfigDirectory = new File(Environment.getExternalStorageDirectory()+"/MyApp/config/");
private void createConfigurationFile(){
File ssConfigDirectory =
new File(Environment.getExternalStorageDirectory()+"/MyApp/config/");
File file = new File(ssConfigDirectory, mUsername+".cfg");
if(!file.exists()){
try{
String state = Environment.getExternalStorageState();
if (!Environment.MEDIA_MOUNTED.equals(state)){
ssConfigDirectory = new File("PATH_WHERE_I_SHOULD_STORE_IT");
}
File ssLogDirectory = new File(ssConfigDirectory+"/SweetSyncal/log/");
ssLogDirectory.mkdirs();
ssConfigDirectory.mkdirs();
File outputFile = new File(ssConfigDirectory, mUsername+".cfg");
FileOutputStream fOut = new FileOutputStream(outputFile);
OutputStreamWriter osw = new OutputStreamWriter(fOut);
writeFile(osw);
osw.flush();
osw.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
如果文件不太大,可以将其保存在设备的内部存储器中 要访问内部存储器,可以使用以下方法:
FileOutputStream openFileOutput(字符串名称,int模式)
(您需要上下文的实例才能使用它)
例如:
String FILENAME = "hello_file";
String string = "hello world!";
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
至于您提供的代码不起作用的原因,有两种可能:
您忘记添加所需的权限(WRITE\u EXTERNAL\u STORAGE
)
您的模拟器未启用SD卡。假设您使用的是Eclipse,您可以在AVD管理器中启用它。只需编辑AVD实例并在相应字段中键入SD卡的大小。您还应该添加一个名为“SD卡支持”的硬件功能,并将其设置为TRUE
《官方开发者指南》中有一篇很棒的文章,它将告诉你关于Android中存储的所有知识
您可以阅读它您有权限写入外部存储吗?在我的清单中,我有权限,但外部存储状态未装入媒体,因此我无法写入。在我的真实设备中,它运行良好。