在文件中添加员工

时间:2014-09-09 10:23:40

标签: java file api file-io io


我想在档案中添加一名员工。
班级员工/ getter and setters /
类EmployeeStore

import java.util.ArrayList;
public class EmployeeStore {

    ArrayList<Employee> emp ;
    public EmployeeStore()
    {
        emp = new ArrayList<Employee>();
    }

    public void ajouter(Employee employee)
    {
        emp.add(employee);
    }
}


Class Main

import java.io.*;
public class EmployeeTest {
 public static void main(String[] args) {
     EmployeeStore employee = new EmployeeStore();

    try {
            BufferedWriter out = new BufferedWriter(new FileWriter("C:/Users/Akram/Documents/akram.txt")) ;
            Employee str = new Employee("Akram","Khalifa");
            employee.ajouter(str);
            StringBuilder  stringBuilder = new StringBuilder();
            stringBuilder.append( str );
           // out.write(str);
            out.close();
            System.out.println("File created successfuly");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

 }
}

创建的文件但我在文件中找不到任何内容(文件为空)。

5 个答案:

答案 0 :(得分:1)

您提供的代码非常混乱。 stringBuilder部分什么都不做。 显然是创建了一个空文件,因为你已经将一个编写器打开到一个文件,但是你从来没有写过任何东西。 当您说“我想在文件中添加员工”时,这意味着您正在尝试序列化员工对象。这可以通过多种方式实现。 您可以使用ObjectOutputStream尝试java的本机序列化(还要注意Writers和Streams之间的区别)。 可以在javadoc中找到一个示例: http://docs.oracle.com/javase/7/docs/api/java/io/ObjectOutputStream.html

答案 1 :(得分:1)

您错过了使用fileWriter将您的stringBuilder转储到您的文件中我假设您的Employee具有firstName和lastName属性 主类应以这种方式编码:

  public class Main {
        public static void main(String[] args) {
             EmployeeStore employee = new EmployeeStore();

            try {

                    Employee str = new Employee("Akram","Khalifa");
                    employee.ajouter(str);
                    StringBuilder  stringBuilder = new StringBuilder();
                    stringBuilder.append( "firstName : "+str.getFirstName () + " --LastName :"+str.getLastName());
                    FileWriter writer = new FileWriter("C:/Users/Akram/Documents/akram.txt") ;
//write down ur employee in the file 
                    writer.write(stringBuilder.toString());;
                    BufferedWriter out = new BufferedWriter(writer) ;

                    out.close();
                    System.out.println("File created successfuly");
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

         }
    }

答案 2 :(得分:1)

// out.write(str);替换为out.write(stringBuilder.toString());并覆盖Employee类的toString()方法,以便在创建的文件中看到有关Employee类的相关信息。

答案 3 :(得分:0)

没有你真正写东西的地方。你可以试试这个

out.append(stringBuilder.toString());

到位的地方

// out.write(str);

答案 4 :(得分:0)

  

创建的文件但我在文件中找不到任何内容(文件为空)。

// out.write(str);

您正在创建空文件并关闭它而不向其写入任何内容。

根据Api,write()接受String,所以你需要 在编写之前将String Builder转换为String

out.write(str.toString())

将解决它。