其实并非有意狂言,实在迫不得已。就是用objectoutputstream向文件中写入数据,按理说当我在windows下打开文件时,应该有东西在。但是为什么却总是空文件,百思不得其解,气得要吐血,希望能获得帮助

解决方案 »

  1.   

    顺便附上我得代码,编译运行无问题,但就是空文件,气死我了,往高手能帮我搞定并解释原因
    import java.awt.*;
    import java.io.FileOutputStream;
    import java.io.ObjectOutputStream;
    import java.io.RandomAccessFile;
    import java.io.Serializable;
    import java.util.Vector;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.*;
    import javax.swing.JOptionPane;public class as extends JFrame
    {private  JButton buttons[],submit;
     private  JLabel labels[];
     private   JTextField fields[];
     private static String[] strb={"开始交易","保存记录","修改记录","停止交易"};
     private static String[] strl={"账号","商品","价格","现金支付"};
     private record rd; 
     private Vector v=new Vector();
     private static ObjectOutputStream output;
     private static int time=0;
     public as()
     { 
    JPanel arraybutton=new JPanel(new GridLayout(1,4));
           buttons=new JButton[4];
           labels=new JLabel[4];
           fields=new JTextField[4];
           try{output=new ObjectOutputStream(new FileOutputStream("e:\\file.txt"));}
           catch(Exception e){}
         for(int count=0;count<4;count++)
         {
           buttons[count]=new JButton(strb[count]);
           arraybutton.add(buttons[count]);
          }
           buttons[0].addMouseListener(new beginecho());
           buttons[1].addMouseListener(new saveecho());
           //buttons[2].addMouseListener(new stopecho());
           buttons[3].addMouseListener(new stopecho());
       JPanel inputtable=new JPanel(new GridLayout(4,4)); 
        for(int count=0;count<4;count++)
         labels[count]=new JLabel(strl[count]);
        for(int count=0;count<4;count++)
         {fields[count]=new JTextField();
            fields[count].setSize(40, 20);
         }
           labels[0]=new JLabel(strl[0]);
           inputtable.add(labels[0]);
           fields[0]=new JTextField();
           
           inputtable.add(fields[0]);
           
           inputtable.add(new JLabel());
           inputtable.add(new JLabel());
           
           labels[1]=new JLabel(strl[1]);
           inputtable.add(labels[1]);
           fields[1]=new JTextField();
           inputtable.add(fields[1]);
           
           inputtable.add(new JLabel());
           inputtable.add(new JLabel());
          
           
           labels[2]=new JLabel(strl[2]);
           inputtable.add(labels[2]);
           fields[2]=new JTextField();
           inputtable.add(fields[2]);
           
           inputtable.add(new JLabel());
           inputtable.add(new JLabel());
           
          
           labels[3]=new JLabel(strl[3]);
           inputtable.add(labels[3]);
           fields[3]=new JTextField();
           inputtable.add(fields[3]);
           
           inputtable.add(new JLabel());
           
          submit=new JButton("提交");
          
          inputtable.add(submit);
          submit.setVisible(false);
          inputtable.validate(); 
      Container container=getContentPane();
      container.setLayout(new BorderLayout(20,20));
      container.add(arraybutton,BorderLayout.NORTH);
      container.add(inputtable,BorderLayout.CENTER);
      container.validate();
      setSize(400,250);
      setVisible(true); }
     
     private class record implements Serializable
     {private int account;
      private String name;
      private float price;
      private float payment;
      public record()
      {}
      public record(int account,String name,float price,float payment)
      {this.account=account;
       this.name=name;
       this.payment=payment;
       this.price=price;
      
      }
      public void setaccount(int acc)
      {account=acc;}
      public int getaccount()
      {return account;}
      
      public void setname(String na)
      {name=na;}
      public String getname()
      {return name;}
      
      public void setprice(float pri)
      {price=pri;}
      public float getprice()
      {return price;}
      
      public void setpayment(float pay)
      {payment=pay;}
      public float getpayment()
      {return payment;}
     
     }
     private class stopecho extends MouseAdapter
     {public void mouseClicked(MouseEvent e)
      {for(int count=0; count<4;count++)
         {labels[count].setVisible(false);
          fields[count].setVisible(false);
          buttons[count].setVisible(false);
          submit.setVisible(true);
      
         }
     
      }
     
     }
     
     private class beginecho extends MouseAdapter
     {public void mouseClicked(MouseEvent e)
      {for(int count=0; count<4;count++)
         {labels[count].setVisible(true);
          fields[count].setVisible(true);
          buttons[count].setVisible(true);
          submit.setVisible(false);
      
         }
     
      }
     
     }
     
     private class saveecho extends MouseAdapter
     {public void mouseClicked(MouseEvent e)
      {int accnum=0;
       rd=new record();
       time++;
       if(fields[0].getText().equals(""))
          JOptionPane.showMessageDialog(null, "帐号不能为空");
       else
         {
       try{
            accnum=Integer.parseInt(fields[0].getText());
                if(accnum>0)
                  {rd.setaccount(accnum);//设置账号
                  
                   String strname=fields[1].getText();
                   if(strname.length()>8)
                   strname=strname.substring(0,8);
                   else if(strname.length()<8)
                            while(strname.length()<8)
                          strname=strname+" ";
                    rd.setname(strname);//设置商品名,使其仅为8个字符
              
                    rd.setprice(Float.parseFloat(fields[2].getText()));//s设置价格
                    rd.setpayment(Float.parseFloat(fields[3].getText()));//设置付款
              
                    v.add(rd);//将记录对象加入vector
                    Object[] ob=v.toArray();//将其转换成对象数组
                    if(time>1)
                      Arrays.sort(ob, new mycompare());//利用比较器对其进行排序,比较器在外面编写
                    for(int count=0;count<ob.length;count++)
                   output.writeObject(ob[count]);//将排序后记录对象写入文件
                      output.flush();
                      output.close();
                   }  
                 else
                JOptionPane.showMessageDialog(null, "帐号必须大于零");
                }
             catch(Exception event){}
       
       }
       for(int count=0;count<4;count++)
        fields[count].setText("");
     
      }
     }
     
     //比较器开始
     private class mycompare implements Comparator
     {
      public int compare(Object o1,Object o2)
      {record r1=(record)o1;
       record r2=(record)o2;
       if(r1.getaccount()>r2.getaccount())
       return 1;
       else if(r1.getaccount()<r2.getaccount())
       return -1;
       else
       return 0;
       }
      }
     //比较器结束  
     public static void main(String[] args)
     {

     as application=new as();
         application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       }}
      

  2.   

    下次发贴最好把代码部分  [code=“×××”][/code]一下,你那个东西看都看不清楚,懒得看。