如此简单的问题,却没人能回答正确,可叹 其实并非有意狂言,实在迫不得已。就是用objectoutputstream向文件中写入数据,按理说当我在windows下打开文件时,应该有东西在。但是为什么却总是空文件,百思不得其解,气得要吐血,希望能获得帮助 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 顺便附上我得代码,编译运行无问题,但就是空文件,气死我了,往高手能帮我搞定并解释原因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); }} 下次发贴最好把代码部分 [code=“×××”][/code]一下,你那个东西看都看不清楚,懒得看。 求教几个简单的java小程序 C转java,面向对象和面向过程能否共存? 数组排列问题 由于项目规范化的原因,想将以后做的项目由单一的操作DAO层变为操作“业务Service服务层”,使用SSH整合开发,工具为MyEclipse,不知道大家怎么处理业务服务层的代码的 哪里有idltojava编译器下载 java 如何连接数据库 我该怎样做呢?? 那位用过用过Seagate Software的Crystal Reports? 一个关于session 存储对象的问题 java jocky 混淆器使用问题 关于泛型 如何用java实现从C中的struct数据类型功能???????????
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);
}}