import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class ass {
private record rd;
ObjectOutputStream output;
ObjectInputStream input;
/**
* @param args
* @throws IOException
* @throws FileNotFoundException
public ass()
* {
* }
*/
public ass()
{try{
rd=new record();
output=new ObjectOutputStream(new FileOutputStream("e:\\file.txt"));
input=new ObjectInputStream(new FileInputStream("e:\\file.txt"));}
catch(Exception er){}
}
public void setrecord()
{rd.setaccount(200);
rd.setname("nihao");
rd.setpayment(20);
rd.setprice(30);}
public void write(record rd)throws Exception
{output.writeObject(rd);output.close();
}
public record read()throws Exception
{record d=(record)input.readObject();
input.close();
return d;} public static void main(String[] args) throws Exception
{ass d=new ass();
d.setrecord();
System.out.println(d.read());
}
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;}
}
// 销售记录类结束
}
运行后抛出异常如下Exception in thread "main" java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2502)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1267)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
at ass.read(ass.java:38)
at ass.main(ass.java:44)
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class ass {
private record rd;
ObjectOutputStream output;
ObjectInputStream input;
/**
* @param args
* @throws IOException
* @throws FileNotFoundException
public ass()
* {
* }
*/
public ass()
{try{
rd=new record();
output=new ObjectOutputStream(new FileOutputStream("e:\\file.txt"));
input=new ObjectInputStream(new FileInputStream("e:\\file.txt"));}
catch(Exception er){}
}
public void setrecord()
{rd.setaccount(200);
rd.setname("nihao");
rd.setpayment(20);
rd.setprice(30);}
public void write(record rd)throws Exception
{output.writeObject(rd);output.close();
}
public record read()throws Exception
{record d=(record)input.readObject();
input.close();
return d;} public static void main(String[] args) throws Exception
{ass d=new ass();
d.setrecord();
System.out.println(d.read());
}
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;}
}
// 销售记录类结束
}
运行后抛出异常如下Exception in thread "main" java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2502)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1267)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
at ass.read(ass.java:38)
at ass.main(ass.java:44)
{
output.writeObject(rd);
output.flush(); ///加上这句
output.close();
}
1.你没有调用write()方法,所以没有写入文件,则调用read()时文件为空,所以返回EOFException。
2.将类序列化时,该类不能是内部类,所以需要把record放到ass类外面。import java.io.*;
import java.io.Serializable;
public class ass {
private record rd;
ObjectOutputStream output;
ObjectInputStream input;
public ass()
{
try{
rd=new record();
output=new ObjectOutputStream(new FileOutputStream("e:\\file.txt"));
input=new ObjectInputStream(new FileInputStream("e:\\file.txt"));
}
catch(Exception er){
}
}
public void setrecord()
{
rd.setaccount(200);
rd.setname("nihao");
rd.setpayment(20);
rd.setprice(30);
write(rd);////调用write()
}
public void write(record rd)
{
try{
output.writeObject(rd);
output.flush();
output.close();
}
catch(Exception e){
e.printStackTrace();
}
}
public record read()
{
record d=null;
try{
d=(record)input.readObject();
input.close();
}
catch(Exception e){
e.printStackTrace();
}
return d;
} public static void main(String[] args)
{
ass d=new ass();
d.setrecord();
System.out.println(d.read()); }
}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;
} }
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;public class ass{
private static record rd;
ObjectOutputStream output;
ObjectInputStream input;
public ass() {
}
//设置记录的属性值
public void setrecord() {
rd = new record();
rd.setaccount(200);
rd.setname("nihao");
rd.setpayment(20);
rd.setprice(30);
}
//写入文件
public void write(record rd) throws Exception {
output=new ObjectOutputStream(new FileOutputStream("e:\\file.txt"));
output.writeObject(rd);
output.flush();
output.close();
}
//从文件中读取出来
public record read() throws Exception {
input=new ObjectInputStream(new FileInputStream("e:\\file.txt"));
record d = (record) input.readObject();
input.close();
System.out.println(d.getname());
System.out.println(d.getprice());
System.out.println(d.getaccount());
System.out.println(d.getpayment());
return d;
} public static void main(String[] args) throws Exception {
//流程先要理清:先生成文件,然后再去文件读取出来。
ass d = new ass();
d.setrecord();
d.write(rd);
d.read();
}
}/**
*
* 对象实体不能是内部类
* @author foolishdault
*
*/
class record implements Serializable {
private static final long serialVersionUID = 3L;//序列化值,写文件或者网络传输都必须设置这个值
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;
}
}