【问题标题】:Writing in a file class without overwriting the previous one写入文件类而不覆盖前一个
【发布时间】:2014-02-05 09:47:38
【问题描述】:

我制作了一个程序来保存用户的姓名、职位和工资。
例如:
名称:user1
职位:会员
小时/周:20

然后我再放一个:
名称:user2
职位:经理
小时/周:25

但是当它显示信息时

如果是这样:
名称:user2
职位:经理
小时/周:25

名称:用户 2 职位:经理 小时/周:25

我总是得到最后的用户输入 :( 请帮帮我.. 对不起我来自 PH 的英语即时消息。

头等舱


import java.io.*;

import java.util.*;


public class Xavier
{
    public static Scanner x = new Scanner(System.in);
    public static int pos[] = new int[20];
    public static int path,user;
    public static String out,data;
    public static double hrswrk[]= new double [20];
    public static double sal[] = new double [20];
    public static String name[]= new String [20];
    public static BufferedReader xx = new BufferedReader(new      InputStreamReader(System.in));
public static void main(String args[])
{
    System.out.println("\n"+user+"HOTKEY\t\t\tPATH");
    System.out.println("1.....\t\t\tSALARY\n2.....\t\t\tDATABASE");
    path = x.nextInt();
    if(path == 1)
    {
        Output();
    }
    else
    {
        XX.displayDATABASE();
    }

}
public static void Output()
{
    XX.writeFile();
    XX.readFile();
    try
    {
    XX.getPosition();
    }
    catch(IOException z)
    {
        System.out.print("ERROR");
    }


}
public static double getSalary()
{
    if(pos[user] == 1)
    {
        sal[user] = 50*hrswrk[user];
    }
    if(pos[user] == 2)
    {
        sal[user] = 40*hrswrk[user];
    }
    if(pos[user] == 3)
    {
        sal[user] = 60*hrswrk[user];
    }

    System.out.println("YOUR SALARY IS: "+sal[user]);
    System.out.println("__________________________");
    XX.writeInfo();


    return(1);
}

}


二等


import java.util.*;
import java.io.*;
public class XX extends Xavier
{
public static void main(String args[])
{


}

public static  String getPosition() throws IOException
{
       //System.out.print("________________________\nHOTKEY\t\t\tPOSITION\n_________________________\n1.....\t\t\tMANAGER\n2.....\t\t\tMEMBER\n3.....\t\t\tJANITOR");

    System.out.println("______________________");
    System.out.print("ENTER POSITION: ");
    pos[user] = x.nextInt();
    System.out.print("ENTER HOURS WORKED: ");
    hrswrk[user] = x.nextDouble();
    System.out.print("ENTER NAME: ");
    name[user] = xx.readLine();



    Xavier.getSalary();

    return("");

}
public static void readFile()
{
    try
    {
    FileReader v= new FileReader("POSITION.TXT");
    BufferedReader n= new BufferedReader(v);

    while((out = n.readLine())!= null)
    {
        System.out.println(out);
    }
    n.close();
    }
    catch(IOException z)
    {
        System.out.print("FILE NOT FOUND");
    }
}
public static void writeFile()
{
    try
    {

    FileWriter r = new FileWriter("POSITION.TXT");
    PrintWriter e = new PrintWriter(r);

    e.println("___________________");
    e.println("1....MANAGER = 50");

    e.println("2....MEMBER = 40");
    e.println("3....JANITOR = 60");
    e.println("____________________");

    e.close();

    }
    catch(IOException z)
    {
        System.out.print("ERROR!");
    }

}
public static void writeInfo()
{
    try
    {

    FileWriter r = new FileWriter("DATABASE.TXT");
    PrintWriter ss = new PrintWriter(r);
    ss.print("_____________________________\n");
    ss.print("NAME:"+name[user]);
    if(pos[user] == 1)
    {
    ss.print("\nPOSITION:MANAGER");
    }
        if(pos[user] == 2)
    {
    ss.print("\nPOSITION:MEMBER");
    }
        if(pos[user] == 3)
    {
    ss.print("\nPOSITION:JANITOR");
    }
    else
    {

    }
    ss.println("\nSALARY:"+sal[user]);
    ss.print("__________________________");
    ss.close();
    }

    catch(IOException z)
    {
        System.out.print("ERROR");
    }
    XX.Loop();



}
public static void displayDATABASE()
{
    try
    {
        FileReader v=new FileReader("DATABASE.TXT");
        BufferedReader sss= new BufferedReader(v);

        while((data = sss.readLine())!=null)
        {
            System.out.println("\n"+data);
        }
        sss.close();
    }
    catch(IOException z)
    {
        System.out.print("ERROR");
    }


}
public static void Loop()
{
    user++;
    System.out.println("\n"+user+"HOTKEY\t\t\tPATH");
    System.out.println("1.....\t\t\tSALARY\n2.....\t\t\tDATABASE\n3.....EXIT");
    path = x.nextInt();
    if(path == 1)
    {
        Output();
    }
    if(path == 2)
    {
        XX.displayDATABASE();
    }
    else
    {
        System.exit(0);
    }

}

}

【问题讨论】:

  • 请使用正确的格式

标签: java file-io filereader filewriter


【解决方案1】:

在您的 writeFile 方法中,您创建一个新的 FileWriter 以覆盖整个现有文件。

相反,您需要以附加模式创建它。

FileWriter r = new FileWriter("POSITION.TXT", true);

【讨论】:

    【解决方案2】:

    当您使用java.io.FileWriter 打开文件时,您可以将第二个布尔参数传递给constructor,指示您是要追加 (true) 还是覆盖 (false) 现有数据。

    例子:

    FileWriter r = new FileWriter("POSITION.TXT", true);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 2014-03-21
      • 1970-01-01
      • 2016-04-25
      • 2011-05-08
      • 2012-06-18
      • 1970-01-01
      • 2012-04-15
      相关资源
      最近更新 更多