- 締切済み
Vectorの使用法
現在、課題の作成中なんですけどうまくいかないので教えてください。 ファイルに表示されているアクセスログファイルを別のファイルに表示させるコードなんですが、 import java.util.*; import java.io.*; public class AccessLog{ public static void main(String args[]){ if(args.length != 1){ System.exit(0); } String filename = args[0]; Vector vector = new Vector(); try{ String line ; BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(filename))); while((line = reader.readLine()) != null){ vector.addElement(line); writer.println(vector); } }catch(IOException e){ System.out.println(e); } } } Vectorの使い方がよくわからないので教えてください。宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
> 現在、課題の作成中なんですけどうまくいかないので教えてください。 上のコードを見ていて、気になったのは > while((line = reader.readLine()) != null){ > vector.addElement(line); > writer.println(vector); ← ★ > } ★ のところでしょうか。 このままだと、reader(標準入力のようですが)から読み出した行を配列に格納して、 1行読む度にその時点で配列に入っている全ての内容をファイルに出力することになります。 そもそもなぜ、わざわざVectorオブジェクトに読み出したファイルの内容をいったん 格納しているのかは分かりませんが、どうしてもこの処理が必要なのであれば、 while((line = reader.readLine()) != null) { vector.addElement(line); } for (int i = 0; i < vector.size(); i++) { writer.println((String)vector.get(i)); } writer.flush(); writer.close(); として、読み出した内容を全ての配列に格納して、読み出しが終わった段階でファイルに出力する とすべきなのでは? > Vectorの使い方がよくわからないので教えてください。宜しくお願いします。 Vectorについては、C_ranさんが説明されている通りですね
ソースの内容は別としてVectorについてですが 大きさが後から変更できる配列だと考えるとわかりやすいです。 new Vector(); でからの箱を用意します。 addElement(line);でlineを順番に箱に詰めていきます。 内容が知りたいのでしたら //i番目の内容 vector.elementAt(i); とします。 for(int i=0;i<vector.size();i++){ System.out.println(vector.elementAt(i)); } とする事ですべての内容を表示できます。 参考URLに色々なJavaクラスの説明があります。参考にしてみてください。
お礼
大変参考になりました。ありがとうございました。