Java 调用一个类的构造函数来修改它以在另一个类中使用

Java 调用一个类的构造函数来修改它以在另一个类中使用,java,Java,该程序的目的是将文件读写到文本文件中 为此,我有三门课: 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类中,我有代码可以将文本

该程序的目的是将文件读写到文本文件中

为此,我有三门课:

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" );
}

}
}
公共类应用程序
{
公共静态void main(字符串[]args)引发IOException
{
字符串文件_name=“Q:/test.txt”;
尝试
{
ReadFile file=新的ReadFile(文件名);
字符串[]aryLines=file.OpenFile();
对于(int i=0;i
我如何编写代码,为用户提供附加数据的选项

下面是类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;
}

}
公共类读取文件
{
私有字符串路径;
公共读取文件(字符串文件\u路径)
{
路径=文件路径;
}
公共字符串[]OpenFile()引发IOException
{
FileReader fr=新的FileReader(路径);
BufferedReader textReader=新的BufferedReader(fr);
int numberOfLines=readLines();
字符串[]文本数据=新字符串[numberOfLines];
对于(int i=0;i
我希望我能解释清楚

谢谢
Keil

您可以很容易地使用
扫描仪
向用户请求
Y/N
输入。将此输入转换为
布尔值
,并将其传递给您的
WriteFile
构造函数。

如果您希望用户始终附加或始终覆盖特定的行集,您可以执行以下操作:

System.out.println("Enter false to overwrite data, or true to append data");
userEnter = input.nextLine();
boolean append = Boolean.parseBoolean(userEnter);
如果您将这些行放在循环外,用户将被询问一次,并且始终使用相同的值,或者您可以将其放在循环内每次询问

WriteFile data = new WriteFile(file_name, append);

因此,如果我理解您希望用户能够选择是附加到文件还是覆盖它

然后你可以做这样的事情

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" );
}
stringuserenter;
扫描仪输入=新扫描仪(System.in);
对于(int i=0;i<10;i++)
{
布尔追加=真;
System.out.println(“要覆盖文件吗?(Y/N)”);
if(input.nextLine().compareTo(“Y”)==0)
append=false
System.out.println(“\n\n输入要写入文件的文本”);
userEnter=input.nextLine();
WriteFile数据=新的WriteFile(文件名,追加);
data.writeToFile(userEnter);
System.out.println(“写入的文本文件”);
}
现在,若用户在覆盖问题上写入Y,则“将\附加到\文件”将为false,否则为true


这是非常基本的Java,我希望这会有所帮助。

FileWriter write=new FileWriter(path);
更改为
FileWriter write=new FileWriter(path,append_to_file);
+1个很好的答案,但是true/false是用技术术语与用户“交谈”,而不是一个直观的是/否问题是的,可以进行用户输入。equals(“是”)?正确:错误类型的东西