Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

ループでのファイル操作

たびたびすいません。

ループを使ってファイルを配列で格納したいんですが、
わかる方いますか?

・ファイル数→10つ

15

回答

3092

閲覧

15件の回答

評価

0

10個と決め打ちするならfor文で回すだけですよ。

評価

0

>ループを使ってファイルを配列で格納したい

これだけだと、具体的になにをしたいのかが分かりません。
自分の調べてみたこと、やってみたことを書いてみると、もう少し伝わりやすいでしょう。

評価

0

回答ありがとうございます。

ファイルを配列に格納するのは
ファイルクラスのlistメソッドでよろしいですか?

評価

0

mioさん回答ありがとうございます。

自分がやってみたことのソースを書いてみます。

        BufferedReader br = null; 
        
        String strTable[] = new String[5]; 
        try { 
            br = new BufferedReader(new FileReader("sample.csv")); 
            int i = 0; 
            
    while (br.ready()) { 
                String line = br.readLine(); 
                strTable[i] = line; 
                i++; 
            } 
  

評価

0

まずは試してみましょう。

評価

0

少し混乱しているようですが、listメソッドはそのFileオブジェクトが表すパスにあるファイルを文字列配列として取得するメソッドです。
また、ファイルという書き方や、ファイルクラスという書き方をすると、ファイルクラスはFileクラスであるとこちらもわかるのですが、"ファイル"というのがFileオブジェクトのことなのか、ファイルの内容/名前なのか判断に困ります。

また、ループを使ってファイルを配列に格納したい、とのことですが、これはlistメソッドを使うという話と矛盾します。

評価

0

…と、前後しましたね。

それは「ファイルの中身を配列に格納する」コードですが、実際にやりたいことがいまいち分かりません。

評価

0

すいません。突然。
ファイル操作で私もわからないことがあります。

上の処理で
 br = new BufferedReader(new FileReader("sample.csv")); 

の「 ("sample.csv")」ってどういう意味ですか?

ローカルディスクの中の
ファルダ内(例:「C:\\memo」)にして、
memoフォルダの中にあるファイルをひとつずつ
配列に格納することとかってできますか?

評価

0

できますけど、それは上の方法ではできません。
sample.csvは、どういう意味も何も、そういうファイルです、としか・・・

評価

0

適当さん、mioさん回答ありがとうございます。

自分はjava初めて1週間でパソコンもいじり始めてからまだ、2週間くらいしか経っていなくて
なにがなんだかわからないんです。

本当にすいません。

自分がやりたいことはC:ドライブ(ローカルディスク?)にある
フォルダの中からファイル名を取り出し、
そのファイルの中身を読み込み処理を行い、
それをループさせる。

みたいな感じなんですが、わかりますか?

すいません。わかりにくくて。

評価

0

>自分はjava初めて1週間でパソコンもいじり始めてからまだ、2週間くらいしか経っていなくて
>なにがなんだかわからないんです。
これは免罪符にはなりません。

上のプログラムは、あなたが行いたい
"そのファイルの中身を読み込み"
に該当します。

1. Cドライブに存在するフォルダをすべて取得する
2. フォルダ内にあるファイルをすべて取得する
3. ファイルの中身を読み込む
4. 処理を行う

この中で3に当たる部分が終了したわけです。
1と2はほとんど同じですから、どちらかができればもう片方もできますね。これを行うためには、listFilesメソッドを使用すればいいでしょう。
listFilesメソッドはFileオブジェクトの配列が返ってきますので、それをFileReaderのコンストラクタに渡せばOKです。

br = new BufferedReader(new FileReader(file));

のようになります。
あと、取得したFileオブジェクトがファイルなのかディレクトリなのか判断する必要もありますので、isFileメソッド、もしくはisDirectoryメソッドを使用して判断してください。

評価

0

少し誤解を招く表現がありました。

>listFilesメソッドはFileオブジェクトの配列が返ってきますので、それをFileReaderのコンストラクタに渡せばOKです。

と書きましたが、これではlistFilesメソッドの戻り値をそのままFileReaderに渡せばいい、という意味になりますね。

そうではなくて、配列から1つ1つ(for文等で)Fileオブジェクトを取得し、そのオブジェクトをFileReaderのコンストラクタに渡すことになります。

評価

0

回答ありがとうございます。

本当に何度もすいません。
なんとかやってみます。

評価

0

余談ですが、FileReaderはファイルの文字コードを指定できないのでおすすめできません。
面倒でもFileInputStreamとInputStreamReaderを分けて使うほうが良いです。

評価

0

mioさん回答ありがとうございます。

FileInputStreamとInputStreamReaderを使ったほうがいいんですね。
勉強になります。
ありがとうございます。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。