- ベストアンサー
ファイルの1行のデータをbyte単位でストリング配列に書き込みたい
こんばんは。お世話になります。 ファイルに固定長のデータがあります。1行につき20件位あります。 データは固定長なので、行が変わってもデータの項目名は変わりません。最終的には、このデータをDBに入れます。 CSVファイルだと、カンマで区切ってあるので、データを分けることが出来るのですが、固定長のデータはどういう方法で、区切るのでしょうか? 誰か分かる方は教えてください。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
コンストラクタに String(byte[] bytes, int offset, int length) と言うのがありますがこれを使えばすむ話ではないのですか?
その他の回答 (2)
- a-kuma
- ベストアンサー率50% (1122/2211)
> 実は、全角のデータが含まれておりまして、出来ないのです。 中途半端な回答で申し訳ない (^^; ただの思いつきですが、String#getBytes() を使ってばらしてみてはどうでしょうか? > ただいま、正規表現を根性で勉強しています。 Java の資料をあたるより perl の資料をあたった方が分かりやすいかもしれませんね。 ただ、正規表現というのは、あくまでも *文字ベース* なので、この質問のケースには 利用しにくいかも。
お礼
どうも、ご回答ありがとうございます。 String.getBytes()やら、ByteArrayInputStreamクラスなどを試してはいますが、エラーが出てしまうんです。。。 現状としては、BufferedReader.readLine()で1行読み込んで、その後、getBytes()でバイトを取得しています。それから、new String(バイト配列) としていますが、ArrayIndexOutOfBoundsException がでてしまいます。 テストプログラムではうまくいっているので、もう一息だと思います。 どうもありがとうございました。では、またの機会に。
- a-kuma
- ベストアンサー率50% (1122/2211)
String#substring() や StringBuffer#substring() を使って、切り出してゆきます。
補足
どうもありがとうございます。 私もそう思ったんですが、実は、全角のデータが含まれておりまして、出来ないのです。というか、やろうとすれば出来るんだとは思うんですが(半分くらいは作ってあります)もっと便利なクラスがないかと思い、質問しました。 a-kumaさん、いつもありがとうございます。実を言いますと、とても久しぶりの現場で、少々きつい目にあっております。a-kumaさんもお仕事頑張って下さい。私も、この現場がキーポイントとなっております。ただいま、正規表現を根性で勉強しています。では、ありがとうございました。
お礼
ご返事どうもありがとうございます。 ズバリですね。こんな便利なコンストラクタがあるとは。。。今まで、3日位悩んでいたのですが、見事に解消されました。大変感謝しております。 私は、配列の計算などのアルゴリズムが苦手なものですから、大変苦労しておりました。明日、SEが出張から返ってくるので、今夜中に仕上げたいと思います。どうもありがとうございました。とても、助かりました。