2017-04-27 166 views
1

我已經從this question複製了該方法並修改了一下以便在我的項目中使用。我注意到,當我調用createNewFile()方法時,應用程序會忽略我的方法的其餘部分。我怎樣才能解決這個問題?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"/>

我不得不把這個在manifset文件!

+2

我確定它在那個時候會拋出一個'IOException'。但是,既然你只是把它扔到你的「catch」裏面,你永遠不會知道發生了什麼。 – QBrute

+0

此文件還沒有創建 –

+0

那麼,當你在調試器中運行它會發生什麼? –

回答

2
file.createNewFile(); //from this point on, the method is ignored 

它引發了一個異常!

然後,您繼續擠壓異常......通過捕捉它並在catch塊中無所作爲。

如果您打印了異常的堆棧跟蹤而不是壓扁它,那麼您可能會看到有關導致異常的原因的大量線索。一旦你知道是什麼原因導致你可以找出如何解決它。

而且文件沒有創建

是啊。該方法調用失敗。

+0

關於如何解決這個問題的任何想法? –

+2

提示:閱讀javadoc的'Throwable.printStackTrace()' –

+0

謝謝!我找到了解決方案。我忘了在清單中添加