关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
13天前关门了。
改进这个问题
有一个类正在保存另一个类的defaulttablemodel。
file_path = new File( "c://Database//Directory//" );
file_table_stock_save = new File( file_path , "stockfile.file" );
file_path.mkdirs();
try
{
file_path..createNewFile();
fileoutputstream = new FileOutputStream( file_table_stock_save );
objectoutputstream = new ObjectOutputStream( fileoutputstream );
objectoutputstream.writeObject( stock.defaulttablemodel );
objectoutputstream.close();
fileoutputstream.close();
}
catch( Exception exception )
{.....}
下面是如何读取defaulttablemodel
file = new File( "C://Database//Directory//" , "stockfile.file" );
object = new Object();
if( file.exists() )
{
try
{
fileinputstream = new FileInputStream( file );
objectinputstream = new ObjectInputStream( fileinputstream );
object = objectinputstream.readObject();
objectinputstream.close();
fileinputstream.close();
}
catch( Exception exception )
{}
try
{
if( !( object == null ) )
defaulttablemodel = ( DefaultTableModel ) object;
}
catch( Exception exception )
{......}
问题是文件总是存在,但有时无法读取。如何解决这个问题?类应该实现可序列化吗?jtable中的空单元格在读取时会导致错误吗?
1条答案
按热度按时间jhdbpxl91#
首先,我绝不会序列化defaulttablemodel,否则您将序列化不想序列化的内容,包括侦听器等。最好保持简单,序列化数据,并且只序列化数据。我将序列化包含感兴趣的数据的数据向量。使用它可以用检索到的数据重建新的表模型。
幸运的是defaulttablemodel有一个方法,
.getDataVector()
从模型a中检索Vector<Vector>
它保存模型中的所有数据。如果必须使用序列化,我将使用它来保存和检索数据。在下面的代码中,我有一个简单的类,它扩展了defaulttablemodel,并允许用一个数据向量重新创建模型,使用一个常量向量来保存表标题:
然后,我可以通过以下代码序列化和取消序列化模型持有的数据:
我可以将数据读回模型,然后通过以下方式读入jtable:
一个有效的例子: