我正在尝试从文件中读取信息并从该信息中创建对象。文件的每6行左右是一个不同的单元,这意味着第一组线与对象A,下一个集合对象B等相关。
。我可以从文件中读取并创建对象 - 最好是第一组。我的问题是,我不知道如何让读者从创建下一个对象的位置中关闭的位置接收...
(注意:创建文件的read()方法是要创建的新对象的一部分,而不是在主()或类似的内容中)。这是代码的相关位:
驱动程序:
public class CSD{
public static void main (String[] argv){
Vector V=new Vector(10);
CoS jon=new CoS();
jon.display();
}//end main
}
称为cos的
,其构造函数是:
public CoS(){
try{
String fileName=getFileName();
FileReader freader=new FileReader(fileName);
BufferedReader inputFile=new BufferedReader(freader);
this.read(inputFile);
setDegree(major);
setStatus(credits);
} catch(FileNotFoundException ex){
}//end catch
}
既调用read()和getFilename():
public void read(BufferedReader inputFile){
try{
int n;
super.read(inputFile);
String str=inputFile.readLine();
if (str!=null){
n=Integer.parseInt(str);
setCredits(n);
str=inputFile.readLine();
setMajor(str);
}//end if
}catch(IOException ex){}
}//end method
public String getFileName() {
Scanner scan = new Scanner(System.in);
String filename;
System.out.print("Enter the file name and path ==> ");
filename = scan.nextLine();
System.out.println("");
return filename;
}
预先感谢,伙计们!
为什么不使用ObjectInputStream和ObjectOutputStream?还是任何真正的序列化?
javadoc:http://docs.oracle.com/javase/6/docs/api/java/io/objectoutputputstream.html
示例代码:http://www.javadb.com/writing-objects-to-file-with-with-objectOutputStream
基本上,由于您将对象写入文件并想照顾其所在的行,我会建议其他一些序列化替代方案。
一个是对象 *流 - 您在文件上创建一个对象流,只需通过它编写对象即可。稍后,当您阅读时,您会以相反顺序读取对象,它们会像您写的那样回来。
另一个是实现序列化。还记得瞬态关键字吗?在不想保存到文件的字段上使用它。
,然后有一种原始的"手动"方法,您只能保存要保存和以后通过将这些初始化值传递给其构造函数的物品。Kinda就像人们建议您将文件行变为ctor的参数:)
编辑:用对象*流进行猜测写作需要您实现可序列化或外部化的。
但是,如果示例代码不够清楚,请问:)