Java对文本文件的写入
我必须将文本文件读入控制台,然后将其写回控制台。我能够将该文件读取到控制台,但当我写回并尝试下次读取时,该文件是空的。谁能告诉我哪里出了错 下面是读取原始文件的代码Java对文本文件的写入,java,readfile,writefile,Java,Readfile,Writefile,我必须将文本文件读入控制台,然后将其写回控制台。我能够将该文件读取到控制台,但当我写回并尝试下次读取时,该文件是空的。谁能告诉我哪里出了错 下面是读取原始文件的代码 public static ArrayList<Sales> readSaleData(ArrayList<Sales> sale) { System.out.println(); ArrayList<Sales> sales = new ArrayList<Sales&
public static ArrayList<Sales> readSaleData(ArrayList<Sales> sale) {
System.out.println();
ArrayList<Sales> sales = new ArrayList<Sales>();
Frame f = new Frame();
FileDialog saveBox = new FileDialog(f, "Reading text file", FileDialog.LOAD);
saveBox.setVisible(true);
String salePrice = saveBox.getFile();
String fileSavePlace = saveBox.getDirectory();
File inFile = new File(fileSavePlace + salePrice);
BufferedReader in = null;
try {
in = new BufferedReader(new FileReader(inFile));
String line;
int weekCount = 0;
while (((line = in.readLine()) != null)) {
weekCount++;
System.out.println("Week " + weekCount + "\t$" + line.replace(",", " $"));
String[] saleData = line.split(",");
for (String data : saleData) {
double price = Double.parseDouble(data);
Sales s = new Sales(price);
sales.add(s);
}
}
} catch (IOException io) {
System.out.println("There Was An Error Reading The File");
io.printStackTrace();
} finally {
try {
in.close();
} catch (Exception e) {
}
}
return sales;
}
公共静态ArrayList readSaleData(ArrayList销售){
System.out.println();
ArrayList sales=新建ArrayList();
帧f=新帧();
FileDialog saveBox=newfiledialog(f,“读取文本文件”,FileDialog.LOAD);
saveBox.setVisible(true);
字符串salePrice=saveBox.getFile();
字符串fileSavePlace=saveBox.getDirectory();
文件填充=新文件(fileSavePlace+salePrice);
BufferedReader in=null;
试一试{
in=新的BufferedReader(新的文件读取器(infle));
弦线;
int weekCount=0;
而(((line=in.readLine())!=null)){
weekCount++;
System.out.println(“周”+周数+“\t$”+行。替换(“,”,“$”);
字符串[]saleData=line.split(“,”);
for(字符串数据:saleData){
双倍价格=double.parseDouble(数据);
销售额s=新销售额(价格);
销售。添加;
}
}
}捕获(io异常){
System.out.println(“读取文件时出错”);
io.printStackTrace();
}最后{
试一试{
in.close();
}捕获(例外e){
}
}
退货;
}
下面是将其写入文本文件的代码
public static void writeSaleToTextFile(ArrayList<Sales> s) {
Frame f = new Frame();
FileDialog foBox = new FileDialog(f, "Saving invoice information", FileDialog.SAVE);
foBox.setVisible(true);
String saleName = foBox.getFile();
String dirPath = foBox.getDirectory();
File outFile = new File(dirPath + saleName);
PrintWriter out = null;
try {
out = new PrintWriter(new BufferedWriter(new FileWriter(outFile)));
System.out.println("Going in");
for (int i = 0; i < s.size(); i++) {
Sales sale = s.get(i);
out.println(sale.toString());
System.out.println("This is the file size" + sale);
}
System.out.println("Coming Out");
}
catch (IOException io) {
System.out.println("An IO Exception occurred");
io.printStackTrace();
} finally {
try {
out.close();
} catch (Exception e) {
}
}
}
publicstaticvoid writeSaleToTextFile(arraylists){
帧f=新帧();
FileDialog foBox=新建FileDialog(f,“保存发票信息”,FileDialog.SAVE);
foBox.setVisible(true);
字符串saleName=foBox.getFile();
字符串dirPath=foBox.getDirectory();
File outFile=新文件(dirPath+saleName);
PrintWriter out=null;
试一试{
out=新的PrintWriter(新的BufferedWriter(新的FileWriter(outFile)));
System.out.println(“进入”);
对于(int i=0;i
基于此
我得到的唯一输出是“进去”和“出来”。我没有得到其他输出,“这是文件大小”
。。。问题是您正在空列表中调用writeSaleToTextFile
。这是控制台输出的唯一合理解释。。。假设代码如您所示
查看调用
readSaleData
和writeSaleToTextFile
的代码,检查它们是否真的在读/写相同的列表 虽然还不清楚,但您的问题似乎在于调用代码和读取方法
您的阅读方法的签名是:
public static ArrayList<Sales> readSaleData(ArrayList<Sales> sale)
公共静态ArrayList readSaleData(ArrayList销售)
这似乎是错误的,因为您希望向该方法提供一个列表,但从中返回另一个列表
因此,我现在怀疑调用读写方法的代码如下:
ArrayList<Sales> someList = new ArrayList<>();
readSaleData(someList); // This will disregard the return value
writeSaleToTextFile(someList);
ArrayList someList=new ArrayList();
readSaleData(someList);//这将忽略返回值
writeSaleToTextFile(someList);
由于对read方法的调用忽略了结果列表,因此在调用write方法时,原始列表仍然为空。因此,输出是空的,这清楚地表明您在空列表上调用了writing方法
您应该将读取方法的签名更正为
public static ArrayList<Sales> readSaleData()
publicstaticarraylistreadsaledata()
那么你不能像我提到的那样调用它,你必须将调用代码更改为
ArrayList<Sales> someList = readSaleData();
writeSaleToTextFile(someList);
ArrayList someList=readSaleData();
writeSaleToTextFile(someList);
在写入该文件期间,控制台上是否有任何输出?我的意思是,您的方法中有一些System.out.println
调用。你得到了什么?你没有调用flush方法。试试看,让我们知道。@GD_Java-但他>>是1。你需要试着做一些基本的调试,如果那不起作用,你需要2。创建并发布一个。我得到的唯一输出是“进去”和“出来”。我没有得到其他输出,“这是文件大小”