Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.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 写入和读取txt文件_Java - Fatal编程技术网

Java 写入和读取txt文件

Java 写入和读取txt文件,java,Java,我正在尝试做一个包含患者信息的项目,并在用户需要时打印它们。但它目前只增加了一个人。我想添加无限的信息,但我不知道如何修复它 public static void saveChanges(ArrayList<Human> humans) throws IOException { File veritabani = new File("patients.txt"); System.gc(); RandomAccessFile raf = new RandomAc

我正在尝试做一个包含患者信息的项目,并在用户需要时打印它们。但它目前只增加了一个人。我想添加无限的信息,但我不知道如何修复它

public static void saveChanges(ArrayList<Human> humans) throws IOException {
    File veritabani = new File("patients.txt");
    System.gc();
    RandomAccessFile raf = new RandomAccessFile(veritabani, "rw");
    raf.close();
    veritabani.delete();
    int ctrWhile = 0;
    for (int yazdir = 0; yazdir < humans.size(); yazdir++) {

        File f = new File("patients.txt");
        PrintWriter pw = new PrintWriter(new FileOutputStream(f, true));
        String tName=humans.get(yazdir).getNameAndSurname();
        int tID=humans.get(yazdir).getTC();
        int tAge=humans.get(yazdir).getAge();
        boolean tInsuance=humans.get(yazdir).isInsurance();
        String tComplain=humans.get(yazdir).getComplain();

        if (ctrWhile== 0) {
            pw.append(tName+"-"+tID+"-"+tAge+"-"+"-"+tInsuance+"-"+tComplain+"-");
            ctrWhile++;
        } else {
            pw.append("\n"+tName+"-"+tID+"-"+tAge+"-"+"-"+tInsuance+"-"+tComplain+"-");

        }
        pw.close();
    }
}
publicstaticvoidsavechanges(arraylisthumans)抛出IOException{
文件veritabani=新文件(“patients.txt”);
gc();
RandomAccessFile raf=新的RandomAccessFile(veritabani,“rw”);
raf.close();
veritabani.delete();
int=0;
for(int yazdir=0;yazdir
每次通过循环时,都会出现创建新文件、写入文件和关闭文件的情况。因此,每次通过循环,您都将覆盖以前创建的文件


在进入循环之前创建文件,并在完成循环后将其关闭;只在循环中写入。

它可以工作,但我仍然无法打印patients.txt中的所有信息。它只打印一名患者,他们将
true
作为
FileOutputStream
构造函数的
append
参数传递。我认为这不是真正的问题。我怀疑实际的问题是人类中实际上只有一个项目。我认为@RyanMentley是正确的,我没有注意到你在附加那个文件。是的,当我再次尝试时,信息消失了,我不知道为什么人类只有一个项目。好吧,为了得到帮助,我们必须看看信息是如何进入那里的,
RandomAccessFile
在这里毫无意义
newfileoutputstream(…)
将在必要时创建它。