この質問にはかなり簡単な答えがあると確信していますのでここで説明します。メソッドへのパラメータとしてFileWriterを渡す
ファイルにテキストを書き込むためにFileWriterを使用しようとしています。私のプログラムは、ユーザーが指定した既存のファイルからテキストを読み込み、そのテキストをコンソールに出力するか、新しいファイルに出力するかを尋ねます。
私の問題は、FileWriterを "FileOrConsole"メソッドに渡すことだと思います。 FileWriterを "FileOrConsole"メソッドで正しく渡したり、宣言したりしていませんか?ファイルは常に作成されますが、何も書き込まれません。ここで
はコードです:
import java.io.*;
import java.util.*;
public class Reader {
public static void main(String[] args) throws IOException {
Scanner s = null, input = new Scanner(System.in);
BufferedWriter out = null;
try {
System.out.println("Would you like to read from a file?");
String answer = input.nextLine();
while (answer.startsWith("y")) {
System.out.println("What file would you like to read from?");
String file = input.nextLine();
s = new Scanner(new BufferedReader(new FileReader(file)));
System.out
.println("Would you like to print file output to console or file?");
FileOrConsole(input.nextLine(), s, input, out);
System.out
.println("\nWould you like to read from the file again?");
answer = input.nextLine();
}
if (!answer.equalsIgnoreCase("yes")) {
System.out.println("Goodbye!");
}
} catch (IOException e) {
System.out.println("ERROR! File not found!");
// e.printStackTrace();
} finally {
if (s != null) {
s.close();
}
if (out != null) {
out.close();
}
}
}
public static void FileOrConsole(String response, Scanner s, Scanner input,
BufferedWriter out) {
if (response.equalsIgnoreCase("console")) {
while (s.hasNext()) {
System.out.println(s.nextLine());
}
} else if (response.equalsIgnoreCase("file")) {
System.out.println("Name of output file?");
response = input.nextLine();
try {
out = new BufferedWriter(new FileWriter(response));
} catch (IOException e) {
e.printStackTrace();
}
while (s.hasNext()) {
try {
out.write(s.nextLine());
out.newLine();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
} else {
System.out.println("Sorry, invalid response. File or console?");
response = input.nextLine();
FileOrConsole(response, s, input, out);
}
}
}
[ファイルが存在する場合]私は、明らかに入力が存在している必要があります(両方の入力/出力ファイル用(http://www.exampledepot.com/egs/java.io/Exists.html)を決定しようとするだろう出力はユーザー入力に検証を追加するべきではありません)。 –