gpt4 book ai didi

java - 将类(class)保存到文件?

转载 作者:太空宇宙 更新时间:2023-11-03 12:41:44 24 4
gpt4 key购买 nike

我正在编写一个程序,它是一个音乐播放器和一个歌词查找器。截至目前,每次程序加载时,它都必须读取每个音乐文件并检索 ID3 标签以查找艺术家姓名、歌曲名称等。当读取多个文件时,提取 ID3 标签的过程非常耗时-消费。我希望能够将 ID3 信息保存到我的程序的私有(private)数据目录中,而不是每次运行程序时都读取每个 ID3 标签。

我对序列化和保存/加载这样的东西感到困惑。我猜我应该使用 FileOutput/InputStreams 或 ObjectOutput/InputStreams 来实现这一点,但我无法掌握它们。有人可以帮助我并告诉我如何正确保存和加载我的“歌曲”类(class)吗?以下是我需要能够保存的变量。

public class Song implements Serializable
{
private int index = 0, trackLength = 0;
private Bitmap albumArtwork = null;
private String toString, name, trackNumber, artist, album, lyrics, fileName, releaseDate;
}

如您所见,我需要跟踪一些字符串、两个整数和一个位图。有人可以告诉我如何将这些的 arrayArrayList 保存到一个文件中,比如说,名为“music_info.sav”或类似的东西吗?另外,如何检查此文件是否存在(如果不存在,则将文件创建为空文件)?

最佳答案

    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("song.ser"));
out.writeObject(yourArrayList);
out.flush();
out.close();

    ObjectInputStream in = new ObjectInputStream(new FileInputStream("song.ser"));
ArrayList<Song> myArrayList = (ArrayList<Song>) in.readObject();
in.close();

阅读。

编辑

我不确定 Bitmap 对象。您可能需要滚动自己的 readObject() 和 writeObject() 方法。

private void writeObject(java.io.ObjectOutputStream out)
private void readObject(java.io.ObjectInputStream in)

这里是序列化和反序列化位图的链接。

http://www.johnwordsworth.com/2011/06/serializing-and-de-serializing-android-graphics-bitmap/

关于java - 将类(class)保存到文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6850589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com