`
jasonlhm
  • 浏览: 17380 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android 将一些信息保存到本地,以后更新版本或者替换之后,数据在新安装的项目中还能使用

 
阅读更多
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 studio 保存图片到本地相册

    在Android开发中,将网络上的图片保存到用户的本地相册是一项常见的需求。Android Studio作为官方推荐的集成开发环境,提供了方便的工具和方法来实现这一功能。本教程将详细讲解如何利用Android Studio将图片从网络...

    ANDROID 软件自动更新

    4. 数据迁移:在安装新版本前,确保保存用户数据,如通过备份SharedPreferences、数据库文件等。 5. 启动新版本:安装完成后,旧版本应用会被新版本替换,但用户的数据和设置得以保留。 五、注意事项 1. 版本兼容...

    android日志提取保存到指定的空间

    然后,通过Intent服务或者后台线程,将这些日志数据保存到本地文件,如SQLite数据库、文本文件或者存储卡。 保存日志到指定位置通常涉及以下几个步骤: 1. **获取存储权限**:在Android 6.0及以上版本,需要在运行...

    android 下载图片到本地Sdcard

    在Android平台上,将图片从互联网下载到用户的外部存储(通常称为SDcard)是常见的需求,例如在应用中加载网络头像、壁纸或者其他图像资源。这个过程涉及到网络请求、数据流处理以及文件操作等多个方面。接下来,...

    Android 使用模板生成Word文档的demo,最新版在Android studio中运行

    在Android环境中使用Apache POI需要解决几个挑战,如内存限制和对Java SE类库的依赖,但通过合理的封装和优化,可以在Android Studio中实现。 首先,我们要了解如何在Android应用中集成Apache POI。由于Android默认...

    Android解析xml文件获取网络数据http请求,带Fragment框架,图片缓存本地

    在这个项目中,我们关注的是如何在Android应用中使用XML解析器获取网络数据,结合Fragment框架进行界面展示,并且实现图片的本地缓存。下面将详细介绍这些知识点。 1. XML解析:XML(eXtensible Markup Language)...

    Android 在线下载压缩包并解压到指定目录.zip

    在Android平台上,实现在线下载压缩包并解压到指定目录是一项常见的需求,特别是在移动应用中,用户可能需要从服务器获取数据或更新资源。这个过程涉及网络请求、文件操作以及压缩和解压缩技术。下面我们将详细讲解...

    android 程序自动更新源码

    在Android应用开发中,实现程序自动更新是一项重要的功能,它能确保用户总是使用到最新、最安全的软件版本。这个"android程序自动检查更新源码"提供了实现这一功能的代码示例,对于开发者来说,是一个非常实用的学习...

    35 Flutter仿京东商城项目 用户注册 完成注册、保存用户信息、跳转到根、显示用户信息.rar

    在这个项目中,可能选择将用户的登录信息(如ID和token)存储在Shared Preferences中,以便之后的登录操作。 页面间的跳转是Flutter中的另一关键概念。Flutter使用Navigator组件管理应用程序的路由栈。当用户成功...

    使用poi替换word中的文字和图片实现打印

    3. 替换图片:删除原始图片,然后创建新的XWPFPictureData对象,将转换后的图像数据添加到文档中。 4. 更新图片引用:更新XWPFPicture对象指向新的XWPFPictureData,以确保文档中的图片显示正确。 5. 保存更改:与...

    Android经典项目开发实战_源代码

    源代码可能会包含Fragment的创建、替换和通信,以及如何在不同的设备配置中使用它们。 5. **数据存储**:Android提供了多种数据存储方式,包括Shared Preferences、SQLite数据库、文件系统等。源代码中可能有使用...

    AndroidStudio2.0添加.jar

    2. **定位到项目的lib目录**:打开Android Studio,进入你的项目,在项目结构中找到`app`模块,然后导航到`src/main/libs`目录。如果`libs`目录不存在,你需要手动创建它。右键点击`main`目录,选择`New &gt; Directory...

    DroidCrypt,一个简单的android库。这个android库使用aes加密对字符串执行加密非常容易,它还可以用于保存到共享引用。.zip

    4. **持续更新**:开源项目的维护者通常会定期发布更新,以应对新的安全威胁或兼容新的Android版本。 **在实际项目中的应用** 在实际的Android应用开发中,DroidCrypt可以用于以下场景: - **用户数据保护**:对...

    android使用jsoup 解析html文件

    接下来,我们将讨论如何在Android中使用`jsoup`解析HTML文件并替换内容。 1. **读取HTML文件** - 如果HTML文件存储在网络服务器上,你可以使用`HttpURLConnection`或`OkHttp`等网络库获取HTML内容。 - 如果HTML...

    android 拍照 录像 本地文件上传客户端 服务端

    - 拍照后,通常会将照片保存到SD卡或者手机内部存储的特定目录下,可以通过ContentResolver的insert方法将图片数据插入到MediaStore中,以便系统能自动扫描并显示在图库中。 - 录像完成后,同样需要将视频文件保存...

    android端记录跑步运动轨迹数据的App 本项目功能实现了跑步运动

    android端记录跑步运动轨迹数据的App 本项目功能实现了跑步运动轨迹、运动数据(运动日期记录、单个日期运动次数、每次运动的基本数据(运动距离、时长、消耗、速度等))。地图及运动轨迹展示使用的高德地图...

    安卓Android源码——日志记录,开源项目使用方法见说明.zip

    开源项目可能包含了将日志保存到本地或者上传至服务器的功能,以便于离线分析或者进行大数据处理,找出应用中的模式或问题。 8. **使用方法**: 使用开源日志库通常需要在项目中引入依赖,配置相应的初始化参数,...

    Android最新ImageLoader版本1.91

    3. **磁盘缓存**:除了内存缓存,ImageLoader还支持将图片保存到本地磁盘,即使应用关闭后,下次启动仍能快速加载图片,节省网络资源。 4. **图片占位符和加载失败图**:用户可以指定加载过程中的占位符图片和加载...

    城市排序i-Android

    在Android开发中,"城市排序i-Android"这个项目是一个...通过研究"城市排序i-Android"项目,开发者不仅可以学习到如何在Android中实现数据排序,还能进一步掌握Android应用开发的多个关键领域,从而提升自己的技能。

    新版Android开发教程.rar

    的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...

Global site tag (gtag.js) - Google Analytics