アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在、課題の作成中なんですけどうまくいかないので教えてください。
ファイルに表示されているアクセスログファイルを別のファイルに表示させるコードなんですが、
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の使い方がよくわからないので教えてください。宜しくお願いします。

A 回答 (2件)

ソースの内容は別として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クラスの説明があります。参考にしてみてください。

参考URL:http://java.sun.com/products/jdk/1.2/ja/docs/ja/ …
    • good
    • 0
この回答へのお礼

大変参考になりました。ありがとうございました。

お礼日時:2002/03/10 22:00

> 現在、課題の作成中なんですけどうまくいかないので教えてください。



上のコードを見ていて、気になったのは

> 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さんが説明されている通りですね
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!