0

このプログラムの目的は、ファイルをテキスト ファイルに読み書きすることです。

このために、私は3つのクラスを持っています:

Class ReadFile //Reads and displays text from the text file

Class WriteFile //Gets input from user and puts it writes it to the text file 

Class Application //Holds the Main method for execution.

クラスには、WriteFileテキストをテキスト ファイルに追加する (追加する) か、追加しないコードがあります (テキスト ファイル内のすべてを削除してから、テキスト ファイルに入力を書き込みます。これは、このコードによって実現されます。

public class WriteFile 
{

private String path;
private boolean append_to_file = false;

public WriteFile(String file_path)
{
    path = file_path;
}

public WriteFile (String file_path, boolean append_value)
{
    path = file_path;
    append_to_file = append_value;
}

public void writeToFile(String textLine) throws IOException
{
    FileWriter write = new FileWriter(path);
    PrintWriter print_line = new PrintWriter(write);

    print_line.printf("%s" + "%n", textLine);
    print_line.close();
}
}

テキストファイルにデータを追加するかどうかを決定する唯一の方法は、コメントアウトすることです

append_to_file = append_value;

もちろん、ユーザーはできません。ユーザーにこのオプションを提供したいと思います。

したがって、入力を受け取るコードを保持するクラスアプリケーションにこれを追加できると思いました。

public class Application 
{

public static void main(String[] args) throws IOException
{



String file_name = "Q:/test.txt";

try
{

    ReadFile file = new ReadFile(file_name);
    String[] aryLines = file.OpenFile();

    for(int i = 0; i < aryLines.length; i++)
    {
        System.out.println(aryLines[i]);    
    }
}

catch (IOException e)
{
    System.out.println( e.getMessage());
}

//boolean End = false;
String userEnter;
Scanner input = new Scanner (System.in);

for(int i = 0; i < 10; i++)
{
System.out.println("\n\nenter text to write to file");
userEnter = input.nextLine();

WriteFile data = new WriteFile(file_name, true);
data.writeToFile( userEnter );

System.out.println( "Text File Written To" );
}

}
}

データを追加するオプションをユーザーに提供するコードを作成するにはどうすればよいですか?

役立つ場合は、クラス ReadFile を次に示します。

public class ReadFile 
{
private String path;

public ReadFile (String file_path)
{
    path = file_path;
}

public String[] OpenFile() throws IOException
{
    FileReader fr = new FileReader(path);
    BufferedReader textReader = new BufferedReader(fr);

    int numberOfLines = readLines();
    String[] textData = new String [numberOfLines];



    for(int i = 0; i < numberOfLines; i++)
    {
        textData[i] = textReader.readLine();
    }

    textReader.close();
    return textData;
}

int readLines() throws IOException
{
    FileReader file_to_read = new FileReader(path);
    BufferedReader bf = new BufferedReader(file_to_read);

    String aLine;
    int numberOfLines = 0;

    while ((aLine = bf.readLine()) != null)
    {
        numberOfLines++;
    }
    bf.close();
    return numberOfLines;
}

}

これを明確に説明したことを願っています

ありがとうキール

4

3 に答える 3

1

ユーザーが特定の行セットを常に追加または上書きできるようにするには、次のようにします。

System.out.println("Enter false to overwrite data, or true to append data");
userEnter = input.nextLine();
boolean append = Boolean.parseBoolean(userEnter);

これらの行をループの外に置くと、ユーザーは 1 回尋ねられ、同じ値が常に使用されます。または、ループ内に置いて毎回尋ねることもできます。

WriteFile data = new WriteFile(file_name, append);
于 2013-09-24T07:25:01.063 に答える
0

したがって、ユーザーがファイルに追加するか上書きするかを選択できるようにしたいことを理解している場合。

次に、このようなことができます

String userEnter;
Scanner input = new Scanner (System.in);

for(int i = 0; i < 10; i++)
{
boolean append = true;
System.out.println("Want to overwrite file? (Y/N)");
if(input.nextLine().compareTo("Y")==0)
append=false

System.out.println("\n\nenter text to write to file");
userEnter = input.nextLine();

WriteFile data = new WriteFile(file_name, append);
data.writeToFile( userEnter );

System.out.println( "Text File Written To" );
}

ユーザーが上書きの質問に Y を書き込むと、append_to_file は false になり、それ以外の場合は true になります。

これは本当に基本的なJavaです。これが役に立てば幸いです。

于 2013-09-24T07:27:58.153 に答える
0

を使用して、ユーザーに入力Scannerを求めることが簡単にできます。Y/Nこの入力を a に変換し、コンストラクターbooleanに渡します。WriteFile

于 2013-09-24T07:24:51.170 に答える