【问题标题】:Method ignored after createNewFile()createNewFile() 后忽略的方法
【发布时间】: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() 的返回值,如果失败则不要继续。

标签: java android file io


【解决方案1】:
file.createNewFile();  //from this point on, the method is ignored

它抛出了一个异常!

然后您继续压制异常......通过捕获它并且在catch 块中什么都不做。

如果您打印异常的堆栈跟踪而不是压缩它,您可能会看到有关导致异常的原因的重要线索。一旦你知道是什么原因造成的,你就可以弄清楚如何解决它。

也没有创建文件

是的。方法调用失败。

【讨论】:

  • 关于如何解决这个问题的任何想法?
  • 谢谢!我找到了解决方案。我忘记在清单中添加
  • @JernejKalin 不过,你应该在 catch 块内做一些有意义的事情
猜你喜欢
  • 2016-12-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
  • 1970-01-01
  • 2016-04-18
  • 2015-07-01
  • 1970-01-01
  • 2023-04-02
相关资源
最近更新 更多