私はこのサイトに不慣れなため、ここでご容赦ください。以下は、Java クラスでのプログラミング用に私が書いたプログラムです。これまでのところ、そのほとんどはうまくいっていますが、特定のバグを取り除くことはできないようです。
プログラムが 3 番目の if ブロック (choice == 3) に到達すると、ユーザーはデータを入力できなくなります。
"outputStream = openOutputTextFile(新しいファイル名);"
if ブロックに存在する場合、FileNotFoundException が発生します。しばらくコードをいじった後、プログラムがinputStreamを見つけることができなくなったため、エラーがスローされていることがわかりました。私がチェックしたところ、プログラムはまだエラーをスローしているファイルを見つけて読み書きできることがわかりました。
エラーは、outputStream を入れたときにのみ発生し、inputStream によってスローされているため、おそらくファイル ストリームと関係があると考えています。私は正確に何を知りません
この問題を解決する方法について誰かアイデアがありますか?
public class FileProgram {
public static PrintWriter openOutputTextFile(String fileName)
throws FileNotFoundException {
PrintWriter toFile = new PrintWriter(fileName);
return toFile;
}
public static Scanner readFile(String fileName)
throws FileNotFoundException {
Scanner inputStream = new Scanner(new File(fileName));
return inputStream;
}
public static void main(String args[]) throws FileNotFoundException {
ArrayList<String>fileReader = new ArrayList<String>(10);
PrintWriter outputStream = null;
Scanner inputStream = null;
Scanner keyboard = new Scanner(System.in);
try {
System.out.println("Enter the name of the text file you want to copy.");
String oldFileName = keyboard.nextLine();
inputStream = readFile(oldFileName);
while(inputStream.hasNextLine()) {
String currentLine = inputStream.nextLine();
fileReader.add(currentLine);
}
System.out.println("All data has been collected. Enter the name for the new text file");
String newFileName = keyboard.nextLine();
outputStream = openOutputTextFile(newFileName);
File userFile = new File(newFileName);
if(userFile.exists())
{
System.out.println("The name you entered matches a file that already exists.");
System.out.println("Here are your options to fix this issue.");
System.out.println("Option 1: Shut down the program.");
System.out.println("Option 2: Overwrite the old file with the new empty one.");
System.out.println("Option 3: Enter a different name for the new file.");
System.out.println("Enter the number for the option that you want.");
int choice = keyboard.nextInt();
if(choice == 1) {
System.exit(0);
} else if(choice == 2) {
outputStream = new PrintWriter(newFileName);
} **else if(choice == 3) {
System.out.println("Enter a different name.");
String newerFileName = keyboard.nextLine();
outputStream = openOutputTextFile(newerFileName);
}**
}
for(int i = 0; i < fileReader.size(); i++) {
String currentLine = fileReader.get(i);
outputStream.println(currentLine);
//System.out.println(currentLine);
}
System.out.println("The old file has been copied line-by-line to the new file.");
}
catch(FileNotFoundException e) {
System.out.println("File not found");
System.out.println("Shutting program down.");
System.exit(0);
}
finally {
outputStream.close();
inputStream.close();
}
}
}