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" />
分享到:
相关推荐
在Android开发中,将网络上的图片保存到用户的本地相册是一项常见的需求。Android Studio作为官方推荐的集成开发环境,提供了方便的工具和方法来实现这一功能。本教程将详细讲解如何利用Android Studio将图片从网络...
4. 数据迁移:在安装新版本前,确保保存用户数据,如通过备份SharedPreferences、数据库文件等。 5. 启动新版本:安装完成后,旧版本应用会被新版本替换,但用户的数据和设置得以保留。 五、注意事项 1. 版本兼容...
在Android平台上,将图片从互联网下载到用户的外部存储(通常称为SDcard)是常见的需求,例如在应用中加载网络头像、壁纸或者其他图像资源。这个过程涉及到网络请求、数据流处理以及文件操作等多个方面。接下来,...
在Android环境中使用Apache POI需要解决几个挑战,如内存限制和对Java SE类库的依赖,但通过合理的封装和优化,可以在Android Studio中实现。 首先,我们要了解如何在Android应用中集成Apache POI。由于Android默认...
在这个项目中,我们关注的是如何在Android应用中使用XML解析器获取网络数据,结合Fragment框架进行界面展示,并且实现图片的本地缓存。下面将详细介绍这些知识点。 1. XML解析:XML(eXtensible Markup Language)...
在Android平台上,实现在线下载压缩包并解压到指定目录是一项常见的需求,特别是在移动应用中,用户可能需要从服务器获取数据或更新资源。这个过程涉及网络请求、文件操作以及压缩和解压缩技术。下面我们将详细讲解...
在Android应用开发中,实现程序自动更新是一项重要的功能,它能确保用户总是使用到最新、最安全的软件版本。这个"android程序自动检查更新源码"提供了实现这一功能的代码示例,对于开发者来说,是一个非常实用的学习...
在这个项目中,可能选择将用户的登录信息(如ID和token)存储在Shared Preferences中,以便之后的登录操作。 页面间的跳转是Flutter中的另一关键概念。Flutter使用Navigator组件管理应用程序的路由栈。当用户成功...
然后,通过Intent服务或者后台线程,将这些日志数据保存到本地文件,如SQLite数据库、文本文件或者存储卡。 保存日志到指定位置通常涉及以下几个步骤: 1. **获取存储权限**:在Android 6.0及以上版本,需要在运行...
3. 替换图片:删除原始图片,然后创建新的XWPFPictureData对象,将转换后的图像数据添加到文档中。 4. 更新图片引用:更新XWPFPicture对象指向新的XWPFPictureData,以确保文档中的图片显示正确。 5. 保存更改:与...
源代码可能会包含Fragment的创建、替换和通信,以及如何在不同的设备配置中使用它们。 5. **数据存储**:Android提供了多种数据存储方式,包括Shared Preferences、SQLite数据库、文件系统等。源代码中可能有使用...
2. **定位到项目的lib目录**:打开Android Studio,进入你的项目,在项目结构中找到`app`模块,然后导航到`src/main/libs`目录。如果`libs`目录不存在,你需要手动创建它。右键点击`main`目录,选择`New > Directory...
4. **持续更新**:开源项目的维护者通常会定期发布更新,以应对新的安全威胁或兼容新的Android版本。 **在实际项目中的应用** 在实际的Android应用开发中,DroidCrypt可以用于以下场景: - **用户数据保护**:对...
接下来,我们将讨论如何在Android中使用`jsoup`解析HTML文件并替换内容。 1. **读取HTML文件** - 如果HTML文件存储在网络服务器上,你可以使用`HttpURLConnection`或`OkHttp`等网络库获取HTML内容。 - 如果HTML...
- 拍照后,通常会将照片保存到SD卡或者手机内部存储的特定目录下,可以通过ContentResolver的insert方法将图片数据插入到MediaStore中,以便系统能自动扫描并显示在图库中。 - 录像完成后,同样需要将视频文件保存...
android端记录跑步运动轨迹数据的App 本项目功能实现了跑步运动轨迹、运动数据(运动日期记录、单个日期运动次数、每次运动的基本数据(运动距离、时长、消耗、速度等))。地图及运动轨迹展示使用的高德地图...
开源项目可能包含了将日志保存到本地或者上传至服务器的功能,以便于离线分析或者进行大数据处理,找出应用中的模式或问题。 8. **使用方法**: 使用开源日志库通常需要在项目中引入依赖,配置相应的初始化参数,...
3. **磁盘缓存**:除了内存缓存,ImageLoader还支持将图片保存到本地磁盘,即使应用关闭后,下次启动仍能快速加载图片,节省网络资源。 4. **图片占位符和加载失败图**:用户可以指定加载过程中的占位符图片和加载...
在Android开发中,"城市排序i-Android"这个项目是一个...通过研究"城市排序i-Android"项目,开发者不仅可以学习到如何在Android中实现数据排序,还能进一步掌握Android应用开发的多个关键领域,从而提升自己的技能。
的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...