我有一个创建配置文件和日志文件的应用程序。我将它们存储在外部存储器中,但是当我在我的Android模拟器中尝试它时它不起作用,因为外部存储器是不可写的。如果发生这种情况,我应该在哪里存储文件?
这是我的代码:
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();
}
}
}
答案 0 :(得分:3)
如果文件不是太大,您可以将其保存在设备的内部存储中。
要访问内部存储,您可以使用以下方法:
FileOutputStream openFileOutput (String name, int mode)
(您需要Context
的实例才能使用它)
示例:
String FILENAME = "hello_file";
String string = "hello world!";
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
至于为什么你提供的代码不起作用,那么有两种可能性:
WRITE_EXTERNAL_STORAGE
)。SD Card Support
的硬件功能并将其设置为TRUE。官方开发人员指南中有一篇很棒的文章会告诉您有关Android存储的所有信息。
您可以阅读HERE