FileNotFoundException などの例外を使用した読み取りおよび書き込みメソッドに関する本と、先生が作成したスライドを読みました。私はかなりの量のコードを書き、それを機能させて、ユーザーにファイル パスを尋ね、このファイルを読み取ってコンソールに表示できるようにしました。ファイルテキストを逆にして、この新しいテキストをファイルに出力して保存/作成するのに苦労しています。私の本では、同じプログラムで読み取りと書き込みの両方の方法を実行する方法について説明していません。したがって、出力を行うために私が書いたコードはおそらく非常に間違っています。インターネットでヘルプを検索しましたが、ユーザーが読み書きしたいファイルの場所を入力できるようにしたいので、役立つものは見つかりませんでした。
1. ユーザーがファイル名を選択し、ファイルの内容をコンソールに出力できるようにするクラスを作成します。テキスト ファイルを使用して表示することをお勧めします。Java ファイルはテキスト ファイルです。このコードをメソッドに配置して、コードを上書きせずにこの割り当ての残りを完了できるようにすることができます。を。正しいファイルを処理していることを確認するために、ファイルへのフル パスを入力するようユーザーに求めます。2. コードを変更するか、ファイルの内容を逆順に表示するメソッドを追加します。各行の文字を逆にする必要はありませんが、ファイルの行を逆順に出力するだけです。を。ファイルの内容を ArrayList に読み取ってから、ArrayList をトラバースします。3. 最後に、ファイルの内容を別のファイルにコピーします。ファイルをループして、各行を新しいファイルに書き込む必要があります。また、FileNotFoundException を拡張する新しい例外 FileMissingException も作成したいと考えています。新しい例外を保持するには、別のクラスを作成する必要があります。コードを変更して、FileNotFoundException をキャッチし、FileMissingException をスローします。main() で FileMissingException をキャッチし、例外から message.from を出力します。
私がやらなければならないことがたくさんあるので、プログラムは少し混乱しつつあります。私はプログラミングの初心者なので、理解できないことがたくさんありますが、最善を尽くします。皆さんが私に与えるヒントはとても役に立ちます。
私が書いた新しいコード:
import java.util.Scanner;
import java.io.*;
import java.util.ArrayList;
public class TextFile
{
private static ArrayList<String> filesData = new ArrayList<String>();
private static Scanner console = new Scanner(System.in);
public static void main(String[] args) throws FileNotFoundException
{
System.out.println("Input file: ");
String fileNameInput = console.nextLine();
// Construct the Scanner and PrintWriter objects for reading and writing
File inputFile = new File(fileNameInput);
Scanner in = new Scanner(inputFile);
do
{
// Asks the user what they would like to do with the file info based on number input.
System.out.println("Please enter the number for your choice: ");
System.out.println("1. Display the contents of the file.");
System.out.println("2. Reverse the contents of the file.");
System.out.println("3. Write the contents of the file to a new file.");
System.out.println("0. Exits the program");
int num = console.nextInt();
console.nextLine();
switch(num)
{
case 0:
in.close();
System.exit(0);
break;
case 1:
while (in.hasNext())
{
String lines = in.nextLine();
System.out.println(lines);
}
break;
case 2:
displayReverse(inputFile);
break;
case 3:
outputFile(inputFile);
break;
default:
break;
}
}while (true);
}
public static void displayReverse(File inputFile) throws FileNotFoundException
{
Scanner in = new Scanner(inputFile);
while (in.hasNext())
{
String text = in.next();
filesData.add(text);
}
for (int i = filesData.size(); i > 0; i--)
{
System.out.print(filesData.get(i - 1) + " ");
}
in.close();
}
public static void outputFile(File inputFile) throws FileNotFoundException
{
System.out.println("Name your new file(hint: do not worry about a complete path here!): ");
String outputFileName = inputFile.getParentFile() + "\\" + console.nextLine();
Scanner in = new Scanner(inputFile);
PrintWriter outFiles = new PrintWriter(outputFileName);
while (in.hasNext())
{
String line = in.next();
outFiles.print(line + " ");
}
outFiles.close();
in.close();
}
}