java – 将类保存到文件?

我正在编写一个音乐播放器和歌词查找程序.截至目前,每次加载程序时都必须读取每个音乐文件并检索ID3标签以查找艺术家姓名,歌曲名称等.当阅读多个文件时,提取ID3标签的过程非常及时-consuming.我希望能够将ID3信息保存到程序的私有数据目录中,而不是每次运行程序时都读取每个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;
}

如您所见,我需要跟踪一些字符串,两个整数和一个位图.有人可以告诉我如何将这些数组或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/

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...