包装com.company;进口java.io.*;
导入静态com。公司主要的磁盘
公共类存储系统{private static final String FILE_NAME=“D:/Songs.data”;
public void serialization() {
File file = new File (FILE_NAME);
ObjectOutputStream oos = null;
try {
FileOutputStream fos = new FileOutputStream(file);
if(fos != null) {
oos = new ObjectOutputStream(fos);
for (Song song : disk.getSongList()) {
oos.writeObject(song);
}
}
}
catch (FileNotFoundException e){
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
finally {
if(oos != null){
try {
oos.close();
}
catch (IOException e){
e.printStackTrace();
}
}
}
}
public static void deserialization() throws InvalidObjectException {
File file = new File (FILE_NAME);
ObjectInputStream ois = null;
try {
FileInputStream fis = new FileInputStream(file);
if(fis != null) {
for(int i = 0; i < 3; i++)
{
ois = new ObjectInputStream(fis);
Song song = (Song) ois.readObject();
disk.addSong(song);
}
}
}
catch (FileNotFoundException e){
e.printStackTrace();
}
catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
finally {
try {
ois.close();
}
catch (IOException e){
e.printStackTrace();
}
}
}
}
无法序列化/反序列化。我有一个应该写入文件然后输出的歌曲列表。我不明白为什么它只读取一首歌。
档案:�Øsrcom。公司歌曲“Ї……ј04јJ L genget Ljava/lang/String;L nameq~L timeq~xpt 2:16t有毒Phonksq~t 2:28 GAZt Phonksq~t 3:23t Warriort 重金属 t 2:59t边界可选(岩石)t 6:23t进入沙曼重金属 t Phonkt 2:54sq t岩石)警报 2:28sq
控制台输入:有毒2:16 Phonk GAZ 2:28 Phonk Warrior 3:23重金属边界2:59可选岩石进入sandman 6:23重金属Phonk 2:54报警岩石2:28你做什么流行2:57击中Phonk 2:18
控制台输出: Song{name='Toxic', time='Phonk', genge='2:16'}
请告诉我有什么问题
问题似乎出在反序列化方法上。为什么要为(int i=0;i)做这个循环
public static void deserialization() throws InvalidObjectException {
File file = new File (FILE_NAME);
try {
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
if(fis != null) {
boolean cont = true;
while(cont){
Song song = (Song) ois.readObject();
if(song != null) {
disk.addSong(song);
}else {
cont = false;
}
}
}
}
catch (FileNotFoundException e){
e.printStackTrace();
}
catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
finally {
try {
ois.close();
}
catch (IOException e){
e.printStackTrace();
}
}
}
我希望这对你有帮助。
问题内容: 我有一个Java集合: 现在在显示列表之前有一个字段,我想按此排序此集合。 有什么办法可以做到吗? 问题答案: 使用比较器: 此外,如果实现,则只需使用 使用JDK 8,语法要简单得多。 更简单 最简单的 显然,初始代码也可以用于JDK 8。
主要内容:1 集合元素的排序,2 Collections sort方法,3 字符串正序排序,4 字符串倒序排序,5 包装类型排序,6 自定义对象排序1 集合元素的排序 我们可以对以下元素进行排序: 字符串对象 包装类对象 用户自定义对象 Collections类提供用于对集合的元素进行排序的静态方法。如果集合元素为Set类型,则可以使用TreeSet。但是,我们无法对List的元素进行排序。Collections类提供用于对List类型元素的元素进行排序的方法。 2 Collections so
问题内容: 我有一个需要序列化为XML的对象,其中包含以下字段: XStream可以很好地序列化它(在使用一些别名之后),如下所示: 就目前而言还可以,但是我希望能够将元素重命名为。从XStream站点上的别名文档中,我看不到一种明显的方法。我是否缺少明显的东西? 问题答案: 我建议将更改为,其中Tag是本质上仅包含字符串的域对象。然后你说: 您将得到您想要的。这样可以避免滚动自己的Convert
我有一个程序有很多数据对象。每种方法都实现了可比性,并设置为从最高到最低(基于简单的长值)排序,包括重复的值。我希望这些对象存储在一个集合/列表中,这样我就可以遍历它,并在其各自的位置取出每个对象。 我已经研究过使用树集,但是这不允许重复,因此只保留具有相同值的多个对象中的一个。然后我找到了TreeMultiset,它可以保持元素具有相同的值。唯一的问题是,它只是存储同一对象的副本,而不是多个相等
问题内容: 列表,队列和集合之间有什么区别? 问题答案: 简单来说: 一个 列表 是一个对象,在同一个对象可能出现不止一次的有序列表。例如:[1,7,1,3,1,1,1,5]。谈论列表中的“第三要素”是有意义的。您可以在列表中的任何位置添加元素,在列表中的任何位置更改元素,或从列表中的任何位置删除元素。 一个 队列 也定购,但你永远只触摸元件的一端。所有元素都在队列的“结尾”处插入,并从队列的“开
问题内容: 我试图创建一个IContractResolver来简化WebApi项目上的安全处理。 我正在尝试: 我想基于一组动态条件来序列化某些对象/属性(例如,调用端点的用户角色)。 因此,我实现了一个自定义属性,该属性在Interface的CreateProperty重写中进行了检查,并将ShouldSerialize函数设置为我自己的逻辑。 我现在的问题是,是否可以有条件地序列化某个列表中的