需要在JAVA中加载清单,从.dat或.txt文件输入

需要在JAVA中加载清单,从.dat或.txt文件输入,java,Java,好了,伙计们,我已经做了很长时间了,我有一个电影目录 Iroman 3 Momento 2 LifeofPi 2 Superman 2 The Crazies 1 获取异常:java.io.StreamCorruptedException:invalid stream header:49726F6E(表示输入文件的第一部分。) 我理解为什么它不让我加载: ObjectInputStream反序列化以前使用ObjectOutputStream编写的基本数据

好了,伙计们,我已经做了很长时间了,我有一个电影目录

    Iroman 3
    Momento 2
    LifeofPi 2
    Superman 2
    The Crazies 1
获取异常:java.io.StreamCorruptedException:invalid stream header:49726F6E(表示输入文件的第一部分。)

我理解为什么它不让我加载: ObjectInputStream反序列化以前使用ObjectOutputStream编写的基本数据和对象。“inventory.dat可能不是以前使用ObjectOutputStream编写的序列化对象文件。您可能希望改用InputStreamReader

我尝试使用InputStreamreader,但显然我将使用的对象不适用于这种类型的输入方法

-------清单是数据项的排序列表(ADT排序列表实现为数据项的链接列表),按每个项表示的标题排序

--------每个库存项目都包含一个标题、一个have值、一个want值和一个客户列表(等待列表)

你说:

我尝试使用InputStreamreader,但显然我将使用的对象不适用于这种类型的输入方法

不,您的问题没有任何明显的迹象表明它不能与这种类型的输入法一起工作。在代码运行之前,不要假设任何事情,也不要假设任何您认为明显的事情对我们来说都是明显的。我看到的唯一明显的一点是,如果您的文件包含文本数据,则不应该使用对象InputStream,因为它用于序列化数据,而不是文本,因此您应该使用由BufferedReader包装的InputStreamReader。或者使用扫描程序处理您的文件

您读入数据,拆分数据,然后通过为读入的每行数据使用其构造函数来创建库存对象

伪代码:

Create File from your file path String
Create Scanner object, fileScanner with the File
while the fileScanner has a nextLine to read
  String line gets fileScanner's nextLine.
  Create a line Scanner object, lineScanner, with line of text.
  name String gets lineScanner's next token
  value int gets lineScanner's next int.
  close lineScanner
  Create your object of interest with the name and value values
  put it in your collection
end while loop
close fileScanner

可能在文件的最后一个vasing对象上。您需要调用flush()并关闭流。
这将导致数据丢失

Streamreader不是java类,您能否通过简单的示例或实现向我展示如何使用它?@johnsmith:请参阅编辑。关于实现,首先让我们看看您使用它的尝试。@johnsmith:不,将代码作为问题的编辑发布,并在发布之前测试代码。然后发布任何错误。您将看到这一点您永远不应该这样做。@约翰史密斯您仍在尝试使用您的
ObjectInputStream
。完全删除它,并创建一个
BufferedReader
,以ISR为参数。感谢您悬停获取psuedocode,我尝试使用的对象是一个Linkedlist,用于存储标题和int值。
Create File from your file path String
Create Scanner object, fileScanner with the File
while the fileScanner has a nextLine to read
  String line gets fileScanner's nextLine.
  Create a line Scanner object, lineScanner, with line of text.
  name String gets lineScanner's next token
  value int gets lineScanner's next int.
  close lineScanner
  Create your object of interest with the name and value values
  put it in your collection
end while loop
close fileScanner