0

みなさん、こんにちは。

Androidで動的テーブルを埋めるために使用したいCSVファイルに問題があります。

エミュレーターの「data」フォルダーにファイルを配置し、次の宣言を行ってファイル変数を作成しました。

file = new File("/data/Motors.csv");

このページの別のスレッド(クラスへのリンク)に投稿されたCSVReaderクラスを使用し、次の行を宣言して解析を実行しました。

readerCSV = new CSVReader(new FileReader(file),';','"',0);

最後の行で、変数を作成できるようにするプログラマーは、パラメーターとしてReader(または、FileReader、違いはありません)、区切り文字、引用文字、および行数を送信する必要があります。 CSVリーダーはスキップする必要があります。

問題は、どのディレクトリ(ルートディレクトリでも、メソッドを介して「/」であるとJavaが教えてくれます)に関係なく、プログラムがFileNotFoundExceptionfile.getAbsolutePath();をスローし、少しイライラするポイントに常に到達することです。私はすでにこの問題に2日あるからです。

誰かが私が正しいディレクトリからファイルを取得するために何をすべきかについて少し説明するのを手伝ってくれるなら...それは多くの助けになるでしょう、そして私は私が完成しなければならないコードをさらに進めることができます。

よろしくお願いします!!!!

編集 私は自分のファイルを開くための解決策を見つけました:

  • 私は2つのファイル変数を使用しました。1つは外部ストレージディレクトリのルートを取得し(次のリンクの最初の回答を参照)、もう1つはコードの次の行のように新しいファイルとして宣言されます。 route = Environment.getExternalStorageDirectory(); file = new File(route,"Motors.csv");

  • 後で、見つけたCSVリーダークラスを再度使用しました。最初のパラメーターはFileReaderタイプからのものです(申し訳ありませんが@Rajeshですが、FileDescriptionからパラメーターをAssetManagerCSVリーダークラスに渡したため、代替を使用できませんでした。クラス全体を変更しても、問題はまったく解決しませんでした)。

今はまったく例外はありません!!

4

1 に答える 1

2

Androidにはさまざまなストレージオプションがあります。ファイルは、内部および外部のストレージに保存できます。CSVファイルが静的リソースである場合は、プロジェクトの「アセット」フォルダーにファイルをバンドルすることを考えることができます。

「アセット」ルートを使用している場合は、次のコードセグメントでを取得できますCSVReader

AssetManager am = getAssets();
AssetFileDescriptor afd = am.openFd ("Motors.csv");
FileDescriptor fd = afd.getFileDescriptor();
readerCSV = new CSVReader(fd, ';','"',0);

上記のコードスニペットはエラー/例外処理を実行しません。注意してください。Motors.csvファイルをプロジェクト内の「assets」フォルダーにコピーする必要があります。

于 2012-09-12T14:38:34.630 に答える