我正在编写一个程序,它是一个音乐播放器和一个歌词查找器。截至目前,程序每次加载时都必须读取每个音乐文件并检索 ID3 标签以查找艺术家姓名、歌曲名称等。当读取多个文件时,提取 ID3 标签的过程非常耗时-消耗。我希望能够将 ID3 信息保存到程序的私有(private)数据目录中,而不是每次运行程序时读取每个 ID3 标签。
我对序列化和保存/加载这样的东西感到困惑。我猜我应该使用 FileOutput/InputStreams 或 ObjectOutput/InputStreams 来实现这一点,但我无法掌握它们。有人可以帮助我并告诉我如何正确保存和加载我的“歌曲”类吗?以下是我需要能够保存的变量。
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;
}
如您所见,我需要跟踪一些字符串、两个整数和一个位图。有人可以告诉我如何将其中的 array 或 ArrayList 保存到一个文件中,例如名为“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 - 将类保存到文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6850589/