【发布时间】:2017-04-27 13:00:57
【问题描述】:
我从this question 复制了该方法并进行了一些修改以在我的项目中使用。我注意到,当我调用方法 createNewFile() 时,应用程序会忽略我的方法的其余部分。我该如何解决这个问题?
public void exportDatabase(){
try{
File dbFile=getDatabasePath("Glukozko.db");
File exportDir = new File(Environment.getExternalStorageDirectory(), "");
if (!exportDir.exists()){
exportDir.mkdirs();
}
File file = new File(exportDir, "meritve.csv");
file.createNewFile(); //from this point on, the method is ignored
PrintWriter csvWrite = new PrintWriter(new FileWriter(file));
Cursor meritve=db.vrniMeritve();
if(meritve.getCount()==0){
Toast.makeText(MainActivity.this,"No data availible",Toast.LENGTH_SHORT).show();
}else{
while (meritve.moveToNext()){
String vrstica=meritve.getString(1)+";"+meritve.getString(2)+";"+meritve.getString(3)+";"+meritve.getString(4)+";"+meritve.getString(5)+";"+meritve.getString(6);
System.out.println(vrstica);
}
}
}catch (Exception e){
}
}
我找到了解决办法。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
我必须把它放在清单文件中!
【问题讨论】:
-
我确信它会在那时抛出一个
IOException。但既然你只是把它扔到你的catch里,你永远不会知道会发生什么。 -
也没有创建文件
-
那么,在调试器中运行它会发生什么?
-
不仅没有创建文件,也没有创建目录。您应该检查 mkdirs() 的返回值,如果失败则不要继续。