0

8 年ぶりに Java に戻ります。

ファイル アップロード HTML ページがあります。

<form action="/upload" method="post" enctype="multipart/form-data">
  <input type="file" name="file" />
  <input type="submit" value="Upload" />
</form>

CSVファイルをアップロードする場所から。

/uploaddoPostメソッドを実装するサーブレットにマップします。

  ServletFileUpload upload = new ServletFileUpload();
  FileItemIterator iterator = upload.getItemIterator(req);

  while (iterator.hasNext()) {

    FileItemStream item = iterator.next();
    InputStream stream = item.openStream();

    if (!item.isFormField()) {
      int len;
      byte[] buffer = new byte[8192];
      while ((len = stream.read(buffer, 0, buffer.length)) != -1) {
        // do some deserialization here..?
      }
    }

  }

手動で解析する方法よりも良い方法があることを本当に望んでいます。私はSerializableインターフェースについて読んでいます - これは私が使用できるものですか?

ありがとう。

4

2 に答える 2

2

コードに基づくコモンズ ファイルアップロードのユーザー ガイドを既にご覧になっていると思います。

独自のストリーム読み取りコードを記述する代わりに、commons fileupload からSuper CSVなどの CSV ライブラリに入力ストリームを簡単に渡すことができます。CSV を POJO (つまり Javabean) として読み取ることもできます。を見てみましょう。

コードは、File ではなく InputStream から読み取るという点でのみ例と異なるため、リーダーの作成は次のようになります。

ICsvBeanReader beanReader = new CsvBeanReader(
    new InputStreamReader(stream), CsvPreference.STANDARD_PREFERENCE);

実際に CSV ファイルを読みたくない場合 (たとえば、保存したり、電子メールで送信したりしたい場合)、Commons IO のIOUtilsを使用してバイト配列に読み込むことができます。

byte[] bytes = IOUtils.toByteArray(stream);

ああ、Java へようこそ :)

于 2012-11-26T05:42:01.517 に答える
1

CSVReaderライブラリがあります。

このSerializableインターフェイスは、オブジェクトの状態をバイトストリームに格納するためのものです。これは、ゲームをセーブ ファイルに保存することと考えてください (バージョンをアップグレードしてから古いセーブ データをリロードしようとすると、同様の影響があります)。

于 2012-11-26T05:22:14.193 に答える