• ベストアンサー

CSVファイルを列ごとに読み込む処理について

はじめまして。 よろしくお願いいたします。 プログラミングに興味をもち、JAVAに触れている者です。 現在eclipseでCSVファイルを列ごとに読み込んで表示する、というプログラムを作成しているのですが、コンパイルエラーを除去することができません。 エラー内容は 「処理されない例外の型 FileNotFoundException」 です。 これを見る限りでは読み込むファイルがないということらしいのですが、CSVファイルはちゃんと作成し、作成中のプログラムのファイルがあるディレクトリに置いてあります。 原因を探したいのですが、eclipseのこともjavaのこともよくわかっていないため、まるで見当がつきません。 どうかご教示をお願いいただけませんでしょうか? 以下が作成中のプログラムです。 package ioTest; import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import java.io.FileInputStream; public class IOsample { public static void main (String[] args){ BufferedReader br = null; File csv = new File("sampleCSV.csv"); br = new BufferedReader( new InputStreamReader( new FileInputStream(csv))); while (br.ready()){ System.out.println(br.readLine()); } br.close(); } } レベルの低い質問で申し訳ありませんが、なにとぞよろしくお願いいたします。

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

  • ベストアンサー
  • bgbg
  • ベストアンサー率53% (94/175)
回答No.2

ファイルが見つからないのなら、絶対パスを取得してファイルがどのパスを参照しているのか調べてみるといいでしょう。 File csv = new File("sampleCSV.csv"); System.out.println(csv.getAbsolutePath());

nullpohell
質問者

お礼

ご教示ありがとうございます。 やってみたところ、目的のCSVファイルの絶対パスが表示されました。 やはり原因は他の方が言及されているとおり、例外処理をしていないことのようです。 余談ではありますが、知りたい情報をSystem.out.println();で表示させるという応用法に妙に感動してしまいました。 私にとってSystem.out.println()というと、ただ文字を表示するだけのもの、という程度の認識しかなかったものですから。 大変勉強になりました。

その他の回答 (2)

noname#160244
noname#160244
回答No.3

とりあえずコンパイルエラーをなくしたいのであれば、下のような感じでtry, catchで囲んでください。 なぜこうするのかとか、他の方法とかは「例外」について勉強を進めていくとわかるかと思います。 public static void main (String[] args){   BufferedReader br = null;   try{     File csv = new File("sampleCSV.csv");     br = new BufferedReader(     new InputStreamReader(     new FileInputStream(csv)));     while (br.ready()){       System.out.println(br.readLine());     }     br.close();   }   catch(IOException e){     System.err.println("エラーが発生しました:" + e);   } }

nullpohell
質問者

お礼

アドバイスありがとうございます。 なぜ実用レベルではない遊び半分のプログラムですら例外処理をきちんとしなければならないのか、については「Javaの仕様です」というくらいの認識しかないのですが、これから少しづつ勉強して行こうと思います。

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.1

必ずtry&catchを入れないと上手く動かない気も・・・。 http://www.inf.ie.kanagawa-u.ac.jp/uchida/class/javas/file.html まあ、ファイルが見つからないならフルパスにしてみるとか、環境変数にカレントディレクトリが含まれてるのか確認するのも一つの手段かと思いますが。

nullpohell
質問者

お礼

お返事ありがとうございます。 仕事が終わってから少し調べてみたのですが、どうやら例外処理?をきちんと作ってやらないとコンパイルすらできないのですね。 実用を考えなければ例外処理などなくても良いものだとばかり思っていました。 勉強になりました。

関連するQ&A

専門家に質問してみよう