2011-07-27 20 views
-2

私はcsvファイルを生成しています。 私のコードはcsvファイルを生成する強制終了するandroid

package contactlist.pkg; 

     import java.io.FileWriter; 
     import java.io.IOException; 

    public class GenerateCsv 
    { 
public static void main(String [] args) 
{ 
    generateCsvFile("C:\\test.csv"); 
} 

    private static void generateCsvFile(String sFileName) 
    { 
try 
    { 
    FileWriter writer = new FileWriter(sFileName); 

    writer.append("DisplayName"); 
    writer.append(','); 
    writer.append("Age"); 
    writer.append('\n'); 

    writer.append("MKYONG"); 
    writer.append(','); 
    writer.append("26"); 
     writer.append('\n'); 

    writer.append("YOUR NAME"); 
    writer.append(','); 
    writer.append("29"); 
    writer.append('\n'); 

    //generate whatever data you want 

    writer.flush(); 
    writer.close(); 
} 
catch(IOException e) 
{ 
    e.printStackTrace(); 
} 
    } 
} 

エラーであるあなたは、Androidでファイル構造についての詳細を学ぶ必要が

07-27 13:12:30.508: ERROR/AndroidRuntime(939): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{contactlist.pkg/contactlist.pkg.GenerateCsv}: java.lang.ClassCastException: contactlist.pkg.GenerateCsv 
    07-27 13:12:30.508: ERROR/AndroidRuntime(939):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569) 
    07-27 13:12:30.508: ERROR/AndroidRuntime(939):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
    07-27 13:12:30.508: ERROR/AndroidRuntime(939):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
    07-27 13:12:30.508: ERROR/AndroidRuntime(939):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
     07-27 13:12:30.508: ERROR/AndroidRuntime(939):  at android.os.Handler.dispatchMessage(Handler.java:99) 
    07-27 13:12:30.508: ERROR/AndroidRuntime(939):  at android.os.Looper.loop(Looper.java:123) 
    07-27 13:12:30.508: ERROR/AndroidRuntime(939):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
    07-27 13:12:30.508: ERROR/AndroidRuntime(939):  at java.lang.reflect.Method.invokeNative(Native Method) 
     07-27 13:12:30.508: ERROR/AndroidRuntime(939):  at java.lang.reflect.Method.invoke(Method.java:507) 
    07-27 13:12:30.508: ERROR/AndroidRuntime(939):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
     07-27 13:12:30.508: ERROR/AndroidRuntime(939):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
     07-27 13:12:30.508: ERROR/AndroidRuntime(939):  at dalvik.system.NativeStart.main(Native Method) 
      07-27 13:12:30.508: ERROR/AndroidRuntime(939): Caused by: java.lang.ClassCastException: contactlist.pkg.GenerateCsv 
     07-27 13:12:30.508: ERROR/AndroidRuntime(939):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
     07-27 13:12:30.508: ERROR/AndroidRuntime(939):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561) 
+4

私は全くのAndroidを知りませんが、私は 'Cがあることを想像することはできません読み取るように勧め:'あなたがアクセスすることができ、ドライブを。 –

+0

私はそれを "E:\\ test.csv"に変更すると、クラッシュすることもあります。 – SRam

+1

ああああ。なぜAndroidデバイス上でWindowsファイルパスを使用しようとしていますか? –

答えて

3
package contactlist.pkg; 

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Environment; 
import android.util.Log; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 

public class MainActivity extends Activity { 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     String dir = "/Android/data/contactlist.pkg/csv/"; 
     String fullDir = Environment.getExternalStorageDirectory().toString() + dir; 
     generateCsvFile(fullDir, "data.csv"); 
    } 

    private static void generateCsvFile(String dir, String fileName) { 
     try { 

      File theDir = new File(dir); 
      theDir.mkdirs(); 

      FileWriter writer = new FileWriter(dir + fileName); 

      writer.append("DisplayName"); 
      writer.append(','); 
      writer.append("Age"); 
      writer.append('\n'); 

      writer.append("MKYONG"); 
      writer.append(','); 
      writer.append("26"); 
      writer.append('\n'); 

      writer.append("YOUR NAME"); 
      writer.append(','); 
      writer.append("29"); 
      writer.append('\n'); 

      //generate whatever data you want 

      writer.flush(); 
      writer.close(); 
     } catch (IOException e) { 
      Log.i("file", e.getMessage()); 
     } 
    } 
} 

String dir = "/Android/data/contactlist.pkg/csv/";はただ、あなたが外部ストレージにアプリケーションフォルダを構築する方法の一例であり、それは次のようにする必要があります:/Android/data/<package_name>/files/、あなたが許可を追加する必要がありますAndroidManifest.xmlのmanifestタグに直接書き込んでください。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

そして、私は謙虚に、あなたがこのAndroid Data Storageドキュメント:)

+0

こんにちはayublin ..どのように "資産"アンドロイドフォルダにCSVファイル(test.csv)を保存する – SRam

+0

それはアプリケーションにパッケージ化されていません。 – ayublin

+0

私は具体的な例をMainActivity、String dir = "/Android/data/com.bla.apps/csv/"として与えました。 SDカードパスの後のパスです。 – ayublin

2

です。あなたが書いたC:ドライブのみのSDカードはありません。正しいファイルパスを取得するにはgetExternalStorageDirectoryを使用し、WRITE_SDCARD権限を追加することを忘れないでください。

+0

+1ありがとう... – SRam

3

によって引き起こさ:java.lang.ClassCastExceptionが:contactlist.pkg.GenerateCsvは

アンドロイドで

、あなたは、mainメソッドを持っていない代わりに、アクティビティ、サービスまたは受信機とオーバーライドを実装しますいくつかのメソッド(例えば、onCreate())。基本的なAndroidのチュートリアルを参照してください:Hello world

+0

+1感謝.. – SRam

関連する問題