• ベストアンサー

ファイルの1行のデータをbyte単位でストリング配列に書き込みたい

こんばんは。お世話になります。 ファイルに固定長のデータがあります。1行につき20件位あります。 データは固定長なので、行が変わってもデータの項目名は変わりません。最終的には、このデータをDBに入れます。 CSVファイルだと、カンマで区切ってあるので、データを分けることが出来るのですが、固定長のデータはどういう方法で、区切るのでしょうか? 誰か分かる方は教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • covachan
  • ベストアンサー率38% (46/120)
回答No.3

コンストラクタに String(byte[] bytes, int offset, int length) と言うのがありますがこれを使えばすむ話ではないのですか?

kamkamkam3
質問者

お礼

ご返事どうもありがとうございます。 ズバリですね。こんな便利なコンストラクタがあるとは。。。今まで、3日位悩んでいたのですが、見事に解消されました。大変感謝しております。 私は、配列の計算などのアルゴリズムが苦手なものですから、大変苦労しておりました。明日、SEが出張から返ってくるので、今夜中に仕上げたいと思います。どうもありがとうございました。とても、助かりました。

その他の回答 (2)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

> 実は、全角のデータが含まれておりまして、出来ないのです。 中途半端な回答で申し訳ない (^^; ただの思いつきですが、String#getBytes() を使ってばらしてみてはどうでしょうか? > ただいま、正規表現を根性で勉強しています。 Java の資料をあたるより perl の資料をあたった方が分かりやすいかもしれませんね。 ただ、正規表現というのは、あくまでも *文字ベース* なので、この質問のケースには 利用しにくいかも。

kamkamkam3
質問者

お礼

どうも、ご回答ありがとうございます。 String.getBytes()やら、ByteArrayInputStreamクラスなどを試してはいますが、エラーが出てしまうんです。。。 現状としては、BufferedReader.readLine()で1行読み込んで、その後、getBytes()でバイトを取得しています。それから、new String(バイト配列) としていますが、ArrayIndexOutOfBoundsException がでてしまいます。 テストプログラムではうまくいっているので、もう一息だと思います。 どうもありがとうございました。では、またの機会に。

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

String#substring() や StringBuffer#substring() を使って、切り出してゆきます。

kamkamkam3
質問者

補足

どうもありがとうございます。 私もそう思ったんですが、実は、全角のデータが含まれておりまして、出来ないのです。というか、やろうとすれば出来るんだとは思うんですが(半分くらいは作ってあります)もっと便利なクラスがないかと思い、質問しました。 a-kumaさん、いつもありがとうございます。実を言いますと、とても久しぶりの現場で、少々きつい目にあっております。a-kumaさんもお仕事頑張って下さい。私も、この現場がキーポイントとなっております。ただいま、正規表現を根性で勉強しています。では、ありがとうございました。

関連するQ&A