Java 在文本文件中添加多条记录

Java 在文本文件中添加多条记录,java,Java,我想在一个文本文件中添加多条记录。所以我写了下面的程序。但在这个程序中,每次用户从命令提示符输入数据时,数据都会被覆盖。文件中的数据被覆盖。那么,如何在一个文本文件中添加多个记录呢 apples3.java class apples3 { public static void main(String[] args) { ffile g = new ffile(); g.get(); g.openFile(); g.addRecord

我想在一个文本文件中添加多条记录。所以我写了下面的程序。但在这个程序中,每次用户从命令提示符输入数据时,数据都会被覆盖。文件中的数据被覆盖。那么,如何在一个文本文件中添加多个记录呢

apples3.java

class apples3
{   public static void main(String[] args)
    {   ffile g = new ffile();
        g.get();
        g.openFile();
        g.addRecords();
        g.closeFile();
    }
}
java

import java.io.*;
import java.lang.*;
import java.util.*;
public class ffile
{   private Formatter x;
    Scanner sc = new Scanner(System.in);
    int rollno;
    String fname, lname;
    public void get()
    {   System.out.println("Enter rollno: ");
        rollno = sc.nextInt();
        System.out.println("Enter first name: ");
        fname = sc.next();
        System.out.println("Enter last name: ");
        lname = sc.next();
    }
    public void openFile()
    {   try
        {   x = new Formatter("xyz.txt");
        }
        catch(Exception e)
        {   System.out.println("You have an error");
        }
    }
    public void addRecords()
    {   x.format("%s %s %s ", rollno, fname, lname);
    }
    public void closeFile()
    {   x.close();
    }
}
添加记录后,我使用以下代码段显示它:

Scanner x;
            try
            {   x = new Scanner(new File("Keyur.txt"));
                while(x.hasNext())
                {   String a = x.next();
                    String b = x.next();
                    String c = x.next();
                    String d = x.next();
                    System.out.printf("%s %s %s %s\n", a, b, c, d);                     
                }
                x.close();
            }
            catch(Exception e)
            {   System.out.println("could not find file");
            }
显示屏的输出如cmd中所示:
1 ghi mno
2 xyz abc
3 pqr def

实际上,我正在java框架中运行这个程序。因此,我选择了所有必要的文本框、标签和按钮。
当我在文本框中输入任何名称时,我要删除该名称的特定行,例如输入xyz,然后从数据库txt文件中删除第2行xyz abc。
我在文本框和第二个文本框aaa中写入pqr,然后我想在我的txt文件中更新该记录

因此,如果可能的话,我只需要代码片段,它对我也很有用。

尝试在以下位置打开流:

尝试在以下位置打开流:

试试这个

public void openFile() {
try {
        // APPEND MODE SET HERE
        bw = new BufferedWriter(new FileWriter("xyz.txt", true));
        x = new Formatter(bw);
    } catch (Exception e) {
        System.out.println("You have an error");
    }
}

public void addRecords() {
    x.format("%s %s %s", rollno, fname, lname);
    x.format("%s", "\n");
}
试试这个

public void openFile() {
try {
        // APPEND MODE SET HERE
        bw = new BufferedWriter(new FileWriter("xyz.txt", true));
        x = new Formatter(bw);
    } catch (Exception e) {
        System.out.println("You have an error");
    }
}

public void addRecords() {
    x.format("%s %s %s", rollno, fname, lname);
    x.format("%s", "\n");
}

根据Java文档,每次创建格式化程序对象时,它都会覆盖文件。您可以看到它。试试这个:

import java.io.*;
import java.lang.*;
import java.util.*;
public class ffile
{   
    private File file;
    BufferedWriter output;
    private Formatter x;
    Scanner sc = new Scanner(System.in);
    int rollno;
    String fname, lname;
    public void get()
    {   System.out.println("Enter rollno: ");
        rollno = sc.nextInt();
        System.out.println("Enter first name: ");
        fname = sc.next();
        System.out.println("Enter last name: ");
        lname = sc.next();
    }
    public void openFile()
    {   try
        {
        x = new Formatter();
        file = new File("xyz.txt");
        }
        catch(Exception e)
        {   System.out.println("You have an error");
        }
    }
    public void addRecords()
    {   
        try {
            output = new BufferedWriter(new FileWriter(file,true));
            output.write(x.format("%s %s %s \n", rollno, fname, lname).toString());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void closeFile()
    {   
        x.close();
        try {
            output.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

根据Java文档,每次创建格式化程序对象时,它都会覆盖文件。您可以看到它。试试这个:

import java.io.*;
import java.lang.*;
import java.util.*;
public class ffile
{   
    private File file;
    BufferedWriter output;
    private Formatter x;
    Scanner sc = new Scanner(System.in);
    int rollno;
    String fname, lname;
    public void get()
    {   System.out.println("Enter rollno: ");
        rollno = sc.nextInt();
        System.out.println("Enter first name: ");
        fname = sc.next();
        System.out.println("Enter last name: ");
        lname = sc.next();
    }
    public void openFile()
    {   try
        {
        x = new Formatter();
        file = new File("xyz.txt");
        }
        catch(Exception e)
        {   System.out.println("You have an error");
        }
    }
    public void addRecords()
    {   
        try {
            output = new BufferedWriter(new FileWriter(file,true));
            output.write(x.format("%s %s %s \n", rollno, fname, lname).toString());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void closeFile()
    {   
        x.close();
        try {
            output.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

谢谢它的工作,但当记录被添加,然后我希望它添加到一个新的行。因此我编写了代码
x.format(“%s%s%s\n”,rollno,fname,lname)但它不起作用..对于新行,您可以添加以下内容:
x.format(“%s”,“\n”)希望这能帮助你:)谢谢。它的工作,但当记录被添加,然后我希望它添加到一个新的行。因此我编写了代码
x.format(“%s%s%s\n”,rollno,fname,lname)但它不起作用..对于新行,您可以添加以下内容:
x.format(“%s”,“\n”)希望这能帮助您:)对于我写的新行:
x.format(“%s”,”\n”)x.format(“%s%s%s\n”,rollno,fname,lname)编写代码x.format(“\n%s%s%s”,rollno,fname,lname)编写代码但它不起作用。我有Windows 8.1,我的jdk是jdk1.8.0_05。嗯,我安装的jdk版本与你的不同。我使用的是Ubuntu,我的jdk版本是jdk1.6。不确定,但我也会用你的测试对于新行,我写:
x.format(“%s”,“\n”)x.format(“%s%s%s\n”,rollno,fname,lname)编写代码x.format(“\n%s%s%s”,rollno,fname,lname)编写代码但它不起作用。我有Windows 8.1,我的jdk是jdk1.8.0_05。嗯,我安装的jdk版本与你的不同。我使用的是Ubuntu,我的jdk版本是jdk1.6。不确定,但我也会用你的测试