阵列数据文件操作

时间:2013-01-01 12:02:38

标签: java

我需要使用datainputstream
来打印从用户输入的数据     和dataoutputstream,但这甚至没有正确输入。任何人都可以告诉我     我的代码出了什么问题?

import java.io.*;

class Employee
 {
int id;
String name;
double salary;
 }

public class Ch8Ex2 
 {
   public static void main (String[] args) 
   {
      Employee emp = new Employee();
      try
       {
         File f1 = new File("emp1.dat");
         f1.createNewFile();

         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         DataInputStream da = new DataInputStream(new FileInputStream(f1));
         DataOutputStream ad = new DataOutputStream(new FileOutputStream(f1));

         System.out.println("Enter your ID:");
         emp.id = br.read();
         System.out.println("Enter your name:");
         emp.name = br.readLine();
         System.out.println("Enter your salary:");
         String str = br.readLine();
         emp.salary = Double.parseDouble(str);

         ad.write(emp.id);
         ad.writeUTF(emp.name);
         ad.writeDouble(emp.salary);

         ad.flush();
         ad.close();

         System.out.println("ID:"+da.readInt());

         System.out.println("Name:"+da.readUTF());

         System.out.println("Salary:"+da.readDouble());

         da.close();
       }
        catch(IOException e)
        {

        }
        catch(NumberFormatException e)
        {

        }
     }
}

3 个答案:

答案 0 :(得分:2)

假设这是唯一的事情

emp.id = br.read();

应该是

emp.id = Integer.parseInt(br.readLine());

BufferedReader.read() reads a single character

除非id当然只是一个字符。

答案 1 :(得分:2)

您需要使用ad.writeInt(emp.id)因为ad.write(int)只写一个字节。

答案 2 :(得分:1)

Employee必须是可序列化的

 class Employee implements Serializable
 {
   int id;
   String name;
   double salary;
 }

还在catch块中打印异常然后你就可以得到错误。