プロが教える店舗&オフィスのセキュリティ対策術

すいません、少しお時間を頂きたいと思います。今コマンドライン上でファイルを作ろうとしています。ソースは結城浩氏の著書で使われている、ネット上から無料でダウンロードできるソースを使っています。以下の通りです。

import java.io.*;

public class FileWrite{
public static void main(String[] args) {
if (args.length != 1) {
System.out.println("使用法:java WriteFile1 作成ファイル");
System.out.println("例:java WriteFile1 output.txt < input.txt");
System.exit(0);
}
String filename = args[0];
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(filename)));
String line;
while ((line = reader.readLine()) != null) {
writer.println(line);
}
reader.close();
writer.close();
} catch (IOException e) {
System.out.println(e);
}
}
}

ところが、これをコンパイルして実行までは出来るのですが、いざ因数(=ファイル名)を与えるとコマンドプロンプトがプロンプトのない状態で停止してしまいます。
javacのあるディレクトリ>java FileWrite abc.jsp
と入力しています。(FileWriteはクラス名です。)
また、拡張子の有無は関係ないようです。
何が悪いのでしょうか?
よろしくお願いします。

A 回答 (4件)

>コピーしたことになるのでしょうか。


そうですね。コピーしたことになります。

>ただ、キーボードからの入力はどうすればいいのか分かりませんでした。
キーボードからの入力の場合
java FireWrite output.txt
として入力待ちになったら適当に文字を入力(改行もOK)して
Windows の場合 CTRL+Z を押すと入力終了できます。

>また、コピーではなく指定した内容を新しいファイルに書き出すことは出来ないでしょうか?
意味がよくわかりませんが、
キーボードからの入力をファイルに書き出すという意味なら前述の通りです。
ファイルの一部、最初から10行とか最後の10行という場合には、
引数としてそういうコマンドを受け付けるようにして、プログラムでそのような処理をします。
    • good
    • 0
この回答へのお礼

何度もアドバイスありがとうございました。
答えて頂いたことがまさに聞きたいことでした。
本当に助かります。ヽ(*⌒∇⌒*)ノ::
ファイルの一部を表示するために因数を受け付けるプログラミング化する方法もお聞きしたい気持ちもあるのですが、長くなりすぎるので一旦この質問を終了します。また教えて下さい。(ctrl+cで終了できました。)

お礼日時:2006/05/26 17:47

>ご回答頂いた「java FileWrite abc.jsp < abc.zip」のabc.jspは、(1)はじめに用意しておく必要がありますか?(2)どこに作成されますか(FileWrite.class)のあるフォルダでしょうか?


また、abc.zipは何をどこに用意すればいいのでしょうか?

(1)
abc.jsp は、これから作成されるファイルなので、あらかじめ存在する必要はないです。
(2)
カレントディレクトリに作成される。と思います。
FileWrite.class のあるフォルダというより、
java FileWrite を実行しているフォルダ。

>abc.zipは何をどこに用意すればいいのでしょうか?
新しくファイル名を付けたいファイルをカレントディレクトリに。
abc.zip は、例として書いただけなので、特に意味はありません。
src.txt でもなんでもいいです。
出力ファイルの元になるファイルです。
リダイレクトしない場合には、キーボードからの入力がそのままファイル出力になることになります。

この回答への補足

できました!
input.txtを用意し、内容を「ジローニモ犬」としました。
次にコマンドで「java FileWrite output.txt < input.txt」とすると同一内容を持ったoutput.txtというファイルが作成されました。コピーしたことになるのでしょうか。。
ただ、キーボードからの入力はどうすればいいのか分かりませんでした。
また、コピーではなく指定した内容を新しいファイルに書き出すことは出来ないでしょうか?
何度も質問してしまい申し訳ありません。m(__)m

補足日時:2006/05/26 14:44
    • good
    • 0

このプログラムは、標準入力からの入力にファイル名を付けて保存するプログラムです。


System.in が標準入力になります。
そのために、
java FileWrite abc.jsp
のように実行した場合にはキー入力(標準入力は、キーボード)待ちになります。
プログラム中の使用法のようにファイルから標準入力を与えたい場合は、
java FileWrite abc.jsp < abc.zip
のように標準入力をリダイレクトする必要があります。

この回答への補足

ありがとうございます。
問題点がどこなのか見えてきました。
ただ、「java FileWrite 標準出力」で検索してみてもキーボードやコマンドラインからの入力例しか出てきません。ご回答頂いた「java FileWrite abc.jsp < abc.zip」のabc.jspは、(1)はじめに用意しておく必要がありますか?(2)どこに作成されますか(FileWrite.class)のあるフォルダでしょうか?
また、abc.zipは何をどこに用意すればいいのでしょうか?自分でも探してみますが、教えていただきたいです。よろしくお願いします。m(__)m

補足日時:2006/05/26 13:30
    • good
    • 0

この場合


class名がFileWriteですので
コンパイルには>javac FileWrite.java
実行時は >java FileWrite
となるはずです。
    • good
    • 0
この回答へのお礼

ご解答ありがとうございます。
コンパイルするときにクラス名とファイル名は一致させるよう気をつけます。
m(__)m

お礼日時:2006/05/26 13:08

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