`

Android的数据存储(一)——SharedPreferences和IO

 
阅读更多

一,使用SharedPreferences

有些时候,应用程序有少量的数据需要保存,而且这些数据的格式很简单,都是普通的字符串或基本数据类型等,比如说用户的偏好设置,记住密码等,对于这种数据,可以用SharedPreferences进行保存。

1,SharedPreferences的基本操作

  

//----------------------查找----------------------------------
	//获取只能被本应用读、写的SharedPreference对象,默认寻找在
	//该应用目录下/data/data/app.package.name/shared_prefs目录下的login.xml文件
		SharedPreferences sp = getSharedPreferences("login", MODE_PRIVATE);
	//在loing.xml中查找key是password的值。
		String oldpass = sp.getString("password", "");

//----------------------保存----------------------------------

	SharedPreferences sp = getSharedPreferences("login",
							MODE_PRIVATE);
					//获取SharedPreferences的编辑器
					SharedPreferences.Editor ed = sp.edit();
					ed.putString("password", etpass.getText().toString());
					// 当Editor编辑完成后,提交修改。
					ed.commit();


//----------------------删除----------------------------------
editor.clear();     //清空SharedPreference里的所有数据
editor.remove(String key)  //删除SharedPreference里指定key的数据项

 login.xml的内容:

 

2,如果想访问其他应用程序中的sharedpreferences.xml 

     1) 设置SharedPreference的权限:MODE_WORLD_READABLE  其他应用程序可读

     2) 假设其中OtherApp中的包名:com.lydia.app ,获取该应用的Context对象 

      

Context other = createPackageContext("com.lydia.sp",
							Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences sp = other.getSharedPreferences("otherXML",
						Context.MODE_WORLD_READABLE);
String ss = sp.getString(key);

 

 二,File存储

    1,openFileOutput和openFileInput

 

      getDir(String name,int mode): 在应用程序的数据文件夹下获取或创建name对应的子目录

     File getFilesDir():获取对应应用程序的数据文件夹的绝对路径。 /data/data/com.package/files

     String[] fileList():返回该应用程序的数据文件夹下的全部文件。

     deleteFile(String) 删除该应用程序的数据文件夹下的指定文件

    

 

//----------读--------------------------------------------
		// 打开对应程序的数据文件夹下的文件
					// /data/data/com.lydia.testfile/files/tarena.dat
					InputStream is = openFileInput("tarena.dat");
					byte[] buff = new byte[1024];
					int b = -1;
					StringBuffer sb = new StringBuffer("");
					while ((b = is.read(buff)) != -1) {
						sb.append(new String(buff, 0, b));
					}
					etread.setText(sb.toString());
					System.out.println(getDir("myDir", Context.MODE_APPEND));
					System.out.println(getFilesDir());// /data/data/com.example.bbb/myDir
					// 其中myDir是自己创建的目录
					System.out.println(Arrays.toString(fileList()));// /data/data/com.example.bbb/files
					// 其中files是系统创建的目录
					deleteFile("tarena.dat");//删除

//----------------写--------------------------------------
	// 打开输出流
					OutputStream os = openFileOutput("tarena.dat",
							Context.MODE_APPEND);
					PrintWriter pw = new PrintWriter(os);
					pw.println(etwrite.getText().toString());
					pw.close();

 

2,访问SD上的文件

    步骤如下:

    1)加入权限

   <!-- 在SD中创建与删除文件的权限 -->
    <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS"/>
    <!-- 在SD中写入数据的权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

 

     2)编写代码是要判断SD卡是否挂载

if (Environment.getExternalStorageState().equals(
							Environment.MEDIA_MOUNTED)){}

 

     3)文件操作

      

File sdCardDir = Environment.getExternalStorageDirectory();
File targetFile = new File(sdCardDir.getPath()+ "/my.dat");

 

   

     

  • 大小: 18 KB
分享到:
评论

相关推荐

    Android的数据存储和IO

    在Android应用开发中,数据存储和输入/输出(IO)是至关重要的部分,因为它们涉及到应用程序如何持久化数据以及与其他应用程序或系统进行通信。本文将深入探讨Android中的数据存储方式和IO操作,主要基于《疯狂...

    在android studio中用SQLiteOpenHelper()方法建立数据库

    (1)简单存储——SharedPreferences (2)文件存储: 内部存储——应用程序私有文件 外部存储——SD卡 资源文件——只读( RAW 、XML) (3)数据库存储——SQLiteDataBase 今天我们讲讲在android studio中利用...

    android studio使用SQLiteOpenHelper()建立数据库的方法

    (1)简单存储——SharedPreferences (2)文件存储:内部存储——应用程序私有文件外部存储——SD卡资源文件——只读( RAW 、XML) (3)数据库存储——SQLiteDataBase 今天我们讲讲在android studio中利用数据库...

    android开发之文件操作——文件创建和文件读取

    在Android开发中,文件操作是不可或缺的一部分,无论是存储用户数据、日志信息还是应用程序的状态,都需要对文件进行创建、读取、写入等操作。本项目"android开发之文件操作——文件创建和文件读取"提供了相关的代码...

    安卓Android源码——OpenSudoku一个简单的九宫格数独游戏.zip

    - 存储和读取游戏状态,可能使用SharedPreferences进行轻量级的数据存储,或者使用SQLite数据库进行更复杂的数据管理。 - 文件IO操作,用于保存和加载游戏进度,涉及到序列化或XML/JSON格式的文件交换。 4. **...

    安卓Android源码——OA精灵2011_版.zip

    OA精灵2011版的源码可能采用了标准的MVC(Model-View-Controller)或MVVM(Model-View-ViewModel)架构,这是Android应用开发中常见的设计模式,用于分离业务逻辑、用户界面和数据模型。 在UI设计方面,OA精灵2011...

    安卓Android源码————仿美图秀秀和IOS系统的相机胶卷.zip

    - 使用`RecyclerView`:在Android中,显示大量图片和元数据通常会用到`RecyclerView`,它是一种高效的列表视图,能够动态加载和回收视图,提高性能。 - 自定义Adapter:为了展示图片和相关信息,我们需要创建...

    基于Android的 单机项目移动开发——百纳理财专家.zip

    【基于Android的单机项目移动开发——百纳理财专家】是一个Android平台上的应用程序,主要针对个人理财需求,提供便捷的资产管理、投资分析和财务规划功能。这个项目采用Java编程语言进行开发,并且可能利用了Apache...

    安卓Android源码——断点下载.zip

    1. 文件系统操作:Android提供了Java IO和Android特有的文件操作API,如`File`类和`ParcelFileDescriptor`,用于读写本地文件。在断点续传中,我们需要创建并管理临时文件,以便在下载过程中存储部分数据。 2. HTTP...

    Android源码——新浪微博客户端源码.zip

    4. **多线程处理**:Android应用中的网络请求和IO操作通常在后台线程中执行,以避免阻塞主线程。我们可以研究客户端是如何利用AsyncTask、IntentService或现代的线程池(如ExecutorService)来管理并发的。 5. **...

    android 自定义xml存储方式以及存储位置

    - **首选项(Preferences)**:Android提供了一种简化XML存储的方法——SharedPreferences,它是基于键值对的存储,底层实现就是XML。使用`PreferenceManager.getDefaultSharedPreferences()`和`SharedPreferences....

    Android源码——文件断点续传源码.zip

    这个"Android源码——文件断点续传源码.zip"压缩包提供了一个实现这一功能的示例代码,帮助开发者深入理解并实现自己的断点续传功能。以下是关于这个主题的详细知识点: 1. 断点续传概念: 断点续传是一种允许用户...

    安卓Android源码——AndroidPlayer(仿酷狗播放器).zip

    通过分析和学习AndroidPlayer的源码,开发者不仅可以了解一个完整的音乐播放器的实现过程,还能深入理解Android平台上的多媒体处理、UI设计、数据管理、网络通信等多个核心领域,对提升开发技能大有裨益。

    Android——仿美图秀秀和IOS系统的相机胶卷.rar

    这个压缩包文件“Android——仿美图秀秀和IOS系统的相机胶卷.rar”很可能包含了一些示例代码、设计文档或者资源文件,帮助开发者理解和实现这样的功能。以下是对这些关键知识点的详细说明: 1. 图片加载库:为了...

    安卓开发学习——6.练习SharedPreferences用法和文件IO

    SharedPreferences是安卓里的一种存储方式,利用键值对来存储,比较小巧。 更多的使用的还是文件的IO方式来进行存储数据。 代码如下,submit按键测试SharedPreferences功能,存储的是程序启动的次数,write按键是...

    安卓Android源码——GetSDTree(简单SD卡文件浏览器).zip

    【标题】中的“安卓Android源码——GetSDTree(简单SD卡文件浏览器)”指的是一个基于Android操作系统的开源项目,该项目实现了一个简单的SD卡文件浏览器应用。开发者可以通过研究这个源码来了解如何在Android平台上...

    Android源码——翻页效果txt阅读器源码.zip

    这涉及到SharedPreferences用于存储用户设置,SQLite数据库用于持久化书签数据,以及主题切换的逻辑。 最后,如果阅读器支持网络功能,比如在线下载书籍,那么网络请求的处理也是关键。开发者可能使用了OkHttp或...

    安卓Android源码——一个支持暂停下载断点续传的源码.zip

    这个“安卓Android源码——一个支持暂停下载断点续传的源码.zip”正是为了解决这个问题而提供的。下面,我们将深入探讨这个源码中涉及的核心知识点。 首先,断点续传是一种下载技术,允许用户在下载过程中暂停,并...

    安卓Android源码——文件浏览返回路径.zip

    本压缩包"安卓Android源码——文件浏览返回路径.zip"可能包含了一个实现这一功能的源代码示例。下面将详细探讨Android中实现文件浏览返回路径的关键知识点。 首先,理解Android文件系统是非常重要的。Android使用...

Global site tag (gtag.js) - Google Analytics