这是我在打开txt文件时使用的代码,但每当我想要输入更多数据时它会覆盖数据。
private Formatter X;
private File Y = new File("C:\\Users\\user\\workspace\\Property Charge Management System\\users.txt");
private Scanner Z;
public String[][] PCMSarray;
public boolean OpenFile() {
try{
if(Y.exists()==false){
X = new Formatter("users.txt");
}
return true;
}
catch(Exception e){
System.out.println("File has not yet been created.");
return false;
}
}
这是我用来写入文件的代码,但这可行。
public void WriteToFilecmd(){
Scanner input = new Scanner(System.in);
System.out.println("Please enter your First name");
String Fname = input.next();
System.out.println("Please enter your Last name");
String Lname = input.next();
System.out.println("Please enter your Password");
String Password = input.next();
System.out.println("Please enter your user ID");
String ID = input.next();
System.out.println("Please enter the first address line of your Property");
String addressln1 = input.next();
System.out.println("Please enter the second address line of your Property");
String addressln2 = input.next();
System.out.println("Please enter the third address line of your Property");
String addressln3 = input.next();
System.out.println("Please enter the properties estimated market value");
String EstimatedPropertyValue = input.next();
System.out.println("Please enter your tax owed");
String Taxowed = input.next();
input.close();
X.format("%1$20s %2$20s %3$20s %4$20s %5$20s %6$20s %7$20s %8$20s %9$20s \n",Fname,Lname,Password,ID,addressln1,addressln2,addressln3,EstimatedPropertyValue,Taxowed);
}
答案 0 :(得分:4)
对Formatter使用不同的构造函数,一个采用FileWriter(可附加)的构造函数,并构造FileWriter以便它附加到文件的末尾:
// the second boolean parameter, true, marks the file for appending
FileWriter fileWriter = new FileWriter(fileName, true);
Formatter formatter = new Formatter(fileWriter);
顺便说一句,请学习并遵循Java命名规则,否则其他人不会轻易理解您的代码(即我们!)。变量和方法名称应以小写字母开头。
答案 1 :(得分:0)
您的代码在许多方面都有些混乱,但我认为问题在于您正在测试:
C:\\Users\\user\\workspace\\Property Charge Management System\\users.txt
但是你正在打开
users.txt
...恰好是一个不同的文件,因为你的“当前目录”不是你认为的那样。
即使这不是造成问题的原因,也应该修复它。代码当前编写的方式将在代码执行时当前目录不是“C:\ Users \ user \ workspace \ Property Charge Management System”时中断。
如果你真的想追加而不是覆盖它,那么你需要使用一个Formatter
构造函数来获取打开的输出流或编写器...并提供它使用已在附加模式下打开的流。
我也不应该在你的代码中犯了严重的风格错误。 Java代码的通用规则是变量名称和方法名称必须以小写字母开头。人们认为任何以大写字母开头的东西都是一个类...除非名称是ALL_CAPITALS,它是为清单常量保留的。