下面的代码,没有文件user.ini运行时正常,有的时候会出现Reading Error123:java.io.EOFException,此时的
allconfigfile及currentfile也尚未赋值,但感觉跟这个没关系,请大家指点下新手
=========================
class Usersetup implements Serializable {
private Vector allconfigfile = new Vector(); private String currentfile; public Usersetup() { } public void init() {
File configfile = new File("Data\\user.ini");
if (configfile.exists()) {
try {
FileInputStream fi = new FileInputStream(configfile);
ObjectInputStream si = new ObjectInputStream(fi);
this.currentfile = ((Usersetup) si.readObject()).currentfile;
this.allconfigfile = ((Usersetup) si.readObject()).allconfigfile;
si.close();
} catch (Exception e) {
System.out.print("Reading Error123:" + e);
System.exit(1);
}
} else {
try {
FileOutputStream fo = new FileOutputStream(configfile);
ObjectOutputStream so = new ObjectOutputStream(fo);
so.writeObject(this);
so.close();
} catch (Exception e) {
System.out.println("Saving Error:" + e);
System.exit(1);
}
}
} public int getFileNumber() {
return (allconfigfile.size());
} public void print() {
int i;
for (i = 1; i < 10; i++) {
System.out.print("[" + i + "]");
if (i <= allconfigfile.size()) {
System.out.print(allconfigfile.elementAt(i));
}
System.out.println();
}
System.out.println("[0]返回");
}
}
allconfigfile及currentfile也尚未赋值,但感觉跟这个没关系,请大家指点下新手
=========================
class Usersetup implements Serializable {
private Vector allconfigfile = new Vector(); private String currentfile; public Usersetup() { } public void init() {
File configfile = new File("Data\\user.ini");
if (configfile.exists()) {
try {
FileInputStream fi = new FileInputStream(configfile);
ObjectInputStream si = new ObjectInputStream(fi);
this.currentfile = ((Usersetup) si.readObject()).currentfile;
this.allconfigfile = ((Usersetup) si.readObject()).allconfigfile;
si.close();
} catch (Exception e) {
System.out.print("Reading Error123:" + e);
System.exit(1);
}
} else {
try {
FileOutputStream fo = new FileOutputStream(configfile);
ObjectOutputStream so = new ObjectOutputStream(fo);
so.writeObject(this);
so.close();
} catch (Exception e) {
System.out.println("Saving Error:" + e);
System.exit(1);
}
}
} public int getFileNumber() {
return (allconfigfile.size());
} public void print() {
int i;
for (i = 1; i < 10; i++) {
System.out.print("[" + i + "]");
if (i <= allconfigfile.size()) {
System.out.print(allconfigfile.elementAt(i));
}
System.out.println();
}
System.out.println("[0]返回");
}
}
解决方案 »
- java文件路径问题
- 额,谁知道是因为什么
- Java Swing的问题
- 做一个Java类 (如java bean),在jsp文件里引用这个类
- 请教各位,如何让JTable中的某列成为一个JTextField或者成为一个JButton
- 这句话有什么错么,为什么 disabled="false"或disabled="true".文本框里的值都不可改呢??
- 有什么好的ECLIPSE的网上教程或者教材给推荐一下,谢谢了
- 求救!
- 使用PreparedStatement向表插入数据的时候,如果一个字段是自动增长的,应该怎么办呀???
- Collections.sort()方法,已经实现Comparable接口,为什么无法将Vector排序?
- 关于String的奇怪输出 toString的问题
- 请教怎么在JTextArea中输出显示不同颜色的文字呢?
在没有这个文件,创建这个文件,并写一个对象(自己)到这个文件中。
在有这个文件的时候,从文件读2个对象。
=========
你应该看出写入和读出不匹配(1!=2)
你可以对加一个so.writeObject(this);或者少写一个readObject
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Vector;public class Test1 implements Serializable { private Vector allconfigfile = new Vector(); private String currentfile; public Test1() { } public void init() {
File configfile = new File("d:\\1.txt");
if (configfile.exists()) {
try {
FileInputStream fi = new FileInputStream(configfile);
ObjectInputStream si = new ObjectInputStream(fi);
Test1 temp=(Test1) si.readObject();
this.currentfile = temp.currentfile;
this.allconfigfile = temp.allconfigfile;
si.close();
} catch (Exception e) {
System.out.print("Reading Error123:" + e);
System.exit(1);
}
} else {
try {
FileOutputStream fo = new FileOutputStream(configfile);
ObjectOutputStream so = new ObjectOutputStream(fo);
so.writeObject(this);
so.close();
} catch (Exception e) {
System.out.println("Saving Error:" + e);
System.exit(1);
}
}
} public int getFileNumber() {
return (allconfigfile.size());
} public void print() {
int i;
for (i = 1; i < 10; i++) {
System.out.print("[" + i + "]");
if (i <= allconfigfile.size()) {
System.out.print(allconfigfile.elementAt(i));
}
System.out.println();
}
System.out.println("[0]返回");
}
public static void main(String[] args){
Test1 t1=new Test1();
t1.init();
}
}
这样行了,楼上说的对,读对象的时候多读了一次