0

アプリのSQLiteデータベースをCSVファイルにエクスポートしてSDカードに保存しようとしています。エクスポートメソッドは、DBAdapterクラスでExportToCSVとして定義されました。アプリがSQLiteデータベースを正常に作成することを確認しました。ただし、MainActivityでonPauseメソッドを使用してExportToCSVを呼び出そうとすると、アプリはデータベースのエクスポートに応答できません。このコードを修正する方法についてコメントをいただけますか?私はあなたの助けに感謝します!

私のコードは次のとおりです。

public void ExportToCSV(Cursor c, String fileName) {       
       int rowCount = 0;  
       int colCount = 0;  
       FileWriter fw;  
       BufferedWriter bfw;  
       File sdCardDir = Environment.getExternalStorageDirectory();  
       File saveFile = new File(sdCardDir, fileName);  
       try {  
            rowCount = c.getCount();  
           colCount = c.getColumnCount();  
           fw = new FileWriter(saveFile);  
           bfw = new BufferedWriter(fw);  
           if (rowCount > 0) {  
               c.moveToFirst();  
               // write the colume title  
               for (int i = 0; i < colCount; i++) {  
                   if (i != colCount - 1)  
                      bfw.write(c.getColumnName(i) + ',');  
                   else  
                      bfw.write(c.getColumnName(i));  
               }  
               // change the line
               bfw.newLine();  
               // write data
               for (int i = 0; i < rowCount; i++) {  
                   c.moveToPosition(i);  
                   Log.v("exporting data", "exportting" + (i + 1) + "line");  
                   for (int j = 0; j < colCount; j++) {  
                       if (j != colCount - 1)  
                           bfw.write(c.getString(j) + ',');  
                       else  
                          bfw.write(c.getString(j));  
                   }  
                   // change line
                   bfw.newLine();  
               }  
           }

MainActivity.javaのonPauseを使用してExportToCSVを呼び出します。

@Override
 protected void onPause() {
    super.onPause();
    DBAdapter myDatabase=new DBAdapter(this);
    myDatabase.open();
    Cursor c=myDatabase.getAllgpspoint();
 // this method was defined in DBAdapter.java and returned a Cursor
    myDatabase.ExportToCSV(c, "IRI.csv");
    myDatabase.close();
        mSensorManager.unregisterListener(this);
    }
4

1 に答える 1

0

最後にファイルを閉じる必要があります。

bfw.close();
于 2013-04-30T12:31:59.570 に答える