HongxinLocalSaveUtil



public class HongxinLocalSaveUtil{



private static final String SAVE_URL = "/youban/radio/cache/hongxindata/";



private static final String FILENAME = "record.cfg";



private static HongxinLocalSaveUtilinstance = null;



private static String SDPATH;



public static HongxinLocalSaveUtilgetInstance() {

if (instance == null) {

instance = new HongxinLocalSaveUtil();

}

return instance;

}



private HongxinLocalSaveUtil() {

SDPATH = android.os.Environment.getExternalStorageDirectory()+ "";

}



/**

* 是否能创建和写入文件

*/

public boolean isCanCreateAndWriteFile() {

if (Environment.getExternalStorageState().equals(

Environment.MEDIA_MOUNTED)) {

return true;

}

return false;

}



// 创建目录

public File createDir(String fileName) throws IOException {

File dir = new File(SDPATH + fileName);

dir.mkdirs();

return dir;

}



// 创建文件

public File createFile(String fileName) throws IOException {

File file = new File(SDPATH + fileName);

file.createNewFile();

return file;

}



public void saveRecord(List<MusicData> musicDatas) {



if (Environment.getExternalStorageState().equals(

Environment.MEDIA_MOUNTED)) {



FileOutputStream outStream = null;

DataOutputStream dos = null;

try {

if (!isExist()) {

File file = new File(SDPATH + SAVE_URL + FILENAME);

if (file != null) {

file.delete();

}

}



createDir(SAVE_URL);

File file = createFile(SAVE_URL + FILENAME);



outStream = new FileOutputStream(file);

dos = newDataOutputStream(outStream);

if (musicDatas != null) {

int size = musicDatas.size();

dos.writeInt(size);

for (int i = 0 ; i < size ; i++) {

MusicData musicData = musicDatas.get(i);

if (musicData == null) {

continue;

}

dos.writeUTF(musicData.getImageUrl());

dos.writeUTF(musicData.getMp3Long());

dos.writeUTF(musicData.getMusicName());

dos.writeUTF(musicData.getPlayLink());

dos.writeInt(musicData.getID());

dos.writeUTF(musicData.getLyrics());

}

}else {

dos.writeInt(0);

}

dos.flush();

} catch (FileNotFoundException e) {

// TODO Auto-generatedcatch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generatedcatch block

e.printStackTrace();

} finally {

if (dos != null) {

try {

dos.close();

} catch (IOException e) {

// TODO Auto-generatedcatch block

e.printStackTrace();

}

}

if (outStream != null) {

try {

outStream.close();

} catch (Exception e) {

}

}

}

}

}



// 判断文件是否存在

public boolean isExist() {

File file = new File(SDPATH + SAVE_URL + FILENAME);

return file.exists();

}



public List<MusicData> readData() {

/* sdcard可读状态 */

if (android.os.Environment.getExternalStorageState().equals(

android.os.Environment.MEDIA_MOUNTED)) {



if (!isExist()) {

return null;

}



FileInputStream fis = null;

DataInputStream dis = null;

try {

File file = new File(SDPATH + SAVE_URL + FILENAME);

fis = new FileInputStream(file);

dis = new DataInputStream(fis);



int size = dis.readInt();



if (size == 0) {

return null;

}



List<MusicData> musicDatas = newArrayList<MusicData>();



for (int i = 0 ; i < size ; i++) {

MusicData musicData = new MusicData();

musicData.setImageUrl(dis.readUTF());

musicData.setMp3Long(dis.readUTF());

musicData.setMusicName(dis.readUTF());

musicData.setPlayLink(dis.readUTF());

musicData.setID(dis.readInt());

musicData.setLyrics(dis.readUTF());

musicDatas.add(musicData);

}



return musicDatas;

} catch (Exception e) {

} finally {

if (dis != null) {

try {

dis.close();

} catch (IOException e) {

// TODO Auto-generatedcatch block

e.printStackTrace();

}

}

if (fis != null) {

try {

fis.close();

} catch (Exception e) {

}

}

}

}

return null;

}

}



需要导入权限

<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE" />

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. Android多国语言values文件夹命名
  6. Android开发之Android的核心服务
  7. Android下载完成更新后,没有打开安装成功界面,出现闪退问题
  8. Android(安卓)之 调用短信界面
  9. [Android] 安卓开启WIFI热点代码 以及6.0开启热点报错/异常解决

随机推荐

  1. android 添加混淆
  2. Android(安卓)NDK 工具链的使用方法(Stand
  3. Android‘s process
  4. 让TextView的drawable与文字一起居中
  5. Android:音视频刻录
  6. Universal Image Loader库使用方法
  7. android圆盘菜单效果
  8. 自定义线程池管理类
  9. Android布局颜色对应值
  10. Android——Activity跳转