小弟看了一个基于JMF组件开发的mp3播放器,它有个自动吧用户所选歌曲的相关信息生成为播放列表的,用的方法是HashMap
具体代码:
package com.bo;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;public class PlayerList {
public static HashMap open() {
HashMap map = null;
File file = new File("./播放列表/List.ini");
if (file.exists()) {
try {
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
map = (HashMap) ois.readObject(); } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} }
return map;
} public static void input(HashMap map) {
File file1 = new File("./播放列表");
File file = new File("./播放列表/List.ini");
if (!file.exists()) {
try {
file1.mkdirs();
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(map);
} catch (IOException e) {
e.printStackTrace();
}
} else {
try {
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(map);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
open()方法是播放器上显示已有的歌曲信息,这里在播放器上看到的歌曲信息都正常
可是在关闭软件后,生成的播放列表里(关闭软件后自动生成播放列表信息)是内容全是乱码,就是into()方法。
求解?
具体代码:
package com.bo;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;public class PlayerList {
public static HashMap open() {
HashMap map = null;
File file = new File("./播放列表/List.ini");
if (file.exists()) {
try {
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
map = (HashMap) ois.readObject(); } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} }
return map;
} public static void input(HashMap map) {
File file1 = new File("./播放列表");
File file = new File("./播放列表/List.ini");
if (!file.exists()) {
try {
file1.mkdirs();
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(map);
} catch (IOException e) {
e.printStackTrace();
}
} else {
try {
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(map);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
open()方法是播放器上显示已有的歌曲信息,这里在播放器上看到的歌曲信息都正常
可是在关闭软件后,生成的播放列表里(关闭软件后自动生成播放列表信息)是内容全是乱码,就是into()方法。
求解?
要想不乱码……写个toString()方法。读得时候有点麻烦……
明白了些