Java:読み込んだ文字列を後ろから解釈する方法を説明!

java

まえがき

ファイルから読み込んだ文字は前から解釈することが多いですが、ある程度のまとまり(例えば1行)を読みこんでから後ろから解釈した方が楽な場合があります。
例えば、区切り文字で分割しての処理が難しい場合に、後ろの項目を取得を楽にできるようになります。

今回は、特殊なフォーマットのCSVファイルから後ろの項目を取得する例を考えてみます。

サンプルコード

要件

今回の例では、以下のCSVファイルがインプットであると仮定します。
要件は、一番最後の項目であるユーザー名のみを抜き出して表示する、とします。

  • 1項目目…連番(7文字固定の数値)
  • 2項目目…コメント(改行文字は含まない、カンマ(区切り文字)はエスケープされない)
  • 3項目目…ユーザー名(改行文字やカンマは含まれない)

2項目目にエスケープされないカンマが入ってくる所がポイントです。
単純にStringクラスのsplitメソッドでカンマ区切りのレコードとして処理してしまうと、項目数がその時々で変わってしまうという難しさがあります。

そこで、今回のサンプルコードでは、1行を読み込んでから後ろから文字列を組み立てる、ということをしています。

ソースコード

FileReadWriteMain3.java

処理例

入力ファイル

出力ファイル

あとがき

前々回、前回に続いて、特殊なフォーマットのファイルの読み込み方・解釈の方法について紹介しました。
今回の例のような特殊なフォーマットのファイルは実際にはなかなか目にしないと思いますが、汎用的な処理では解釈できないフォーマットのファイルを扱わなければならなくなることは珍しくありません。
(この記事も、実際に後ろから解釈して対処したことがあったので書いた記事です)
汎用的な処理では解釈できない時に、ファイルを1文字ずつ解釈するテクニックを有効活用できるので、この発想だけでも覚えておいて損はありません。


株式会社サイゼントでは、即戦力のJavaプログラマーを育てるための書籍「絶対にJavaプログラマーになりたい人へ」をKindleで販売しています。

同じく、Spring Frameworkについてきめ細かく解説した別冊も販売中です。

また、上記の書籍をテキストとして用いたプログラミングスクール「サイゼントアカデミー」も開校しています。
このスクールは、受託開発事業・SES事業である弊社が、新入社員向けの研修で培ったノウハウを詰め込んだものです。

ご興味がある方は、上記画像から個別ページにアクセスしてみてください!

コメント

タイトルとURLをコピーしました