Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java对文本文件的写入_Java_Readfile_Writefile - Fatal编程技术网

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。创建并发布一个。我得到的唯一输出是“进去”和“出来”。我没有得到其他输出,“这是文件大小”