第一章 数据与文件储存

=============================访问数据文件==============================

文件的写入与读取:

Activity中获取文件流的方法:

FileOutputStream openFileOutputStream(String 文件路径+文件名, int 文件访问模式)

文件访问模式的可选值:

Context.MODE_APPEND--------------打开文件并在文件添加

Context.MODE_PRIVATE-------------共程序本身读写私有方式打开文件

Context.MODE_WORLD_READABLE------可供其他应用程序读取的方式打开文件(不推荐)

Context.MODE_WORLD_WRITEABLE------可供其他应用程序写入的方式打开文件(不推荐)

使用代码:

1 BufferedOutputStream bos = new BufferedOutputStream(
2     openFileOutputStream("文件名.txt", MODE_PRIVATE));
3 bos.write("要保存的文件内容String".getBytes("UTF-8"));

  或者:

1 BufferedWriter bw = new BufferedWriter(
2     new OutputStreamWriter(openFileOutput(filename, MODE_PRIVATE)));
3 bw.write("要保存的文件内容String");

  

   FileInputStream opneFileInputSrteam(String 文件路径+文件名)

使用代码:

1 BufferedInputStream bis = new BufferedInputStream(openFileInput(filename));
2 byte[] bytes = new byte[100];
3 int iscontinue;
4 while((iscontinue = bis.read(bytes)) != -1)
5 {
6     System.out.print(new String(bytes, 0, bytes.length));
7 }

  或者:

1 BufferedReader br = new BufferedReader(
2         new InputStreamReader(openFileInput(filename)));
3 String line = "";
4 while(line != null)
5 {
6     System.out.println(line);
7     line = br.readLine();
8 }

**注: 如果不指定文件路径, 则默认访问/data/data/<package name>/files目录下的文件

Activity还提供了其他文件操作方法:

String[] fileList()---------------------获取私有目录下的所有文件名的数组列表

File getFilesDir()----------------------获取该Activity所属文件路径的File对象

boolean deleteFile(String filename)-----删除指定文件

小技巧:

//通过getFilesDir().getPath().toString()获取路径,再获取文件File对象

File file = new File(getFilesDir().getPath().toString() + "/" + filename);

//获取File对象的长度

int fileLength = (int)file.length();

案例代码:

 1 public class MainActivity extends Activity
 2 {
 3
 4     @Override
 5     protected void onCreate(Bundle savedInstanceState)
 6     {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_main);
 9
10         final String filename = "我的文件.txt";
11         final String context = "这是我写的要保存的文件内容的第一行" +
12                 "\n这是我写的要保存的文件内容的第二行" +
13                 "\n这是我写的要保存的文件内容的第3行" +
14                 "\n这是我写的要保存的文件内容的第4行";
15         save(filename, context);
16
17         load(filename);
18     }
19
20     /**
21      * 用输出流保存文件
22      * @param filename
23      * @param context
24      */
25     private void save(String filename, String context)
26     {
27         FileOutputStream fos = null;
28         OutputStreamWriter osw = null;
29         BufferedWriter bw = null;
30
31         try
32         {
33             fos = openFileOutput(filename, MODE_PRIVATE);
34             osw = new OutputStreamWriter(fos);
35             bw = new BufferedWriter(osw);
36
37             bw.write(context);
38         }
39         catch (IOException e)
40         {
41             e.printStackTrace();
42         }
43         finally
44         {
45             if(bw != null)
46             {
47                 try
48                 {
49                     bw.close();
50                 }
51                 catch (IOException e)
52                 {
53                     e.printStackTrace();
54                 }
55             }
56         }
57     }
58
59     /**
60      * 注意String line 的 System.out.println(null)会报NullPointerException
61      * 读取filename文件里的数据
62      * @param filename
63      */
64     private void load(String filename)
65     {
66         BufferedReader br = null;
67
68         try
69         {
70             br = new BufferedReader(
71                     new InputStreamReader(openFileInput(filename)));
72             String line = "";
73             while(line != null)
74             {
75                 System.out.println(line);
76                 line = br.readLine();
77             }
78         }
79         catch (IOException e)
80         {
81             e.printStackTrace();
82         }
83         finally
84         {
85             if(br != null)
86             {
87                 try
88                 {
89                     br.close();
90                 }
91                 catch (IOException e)
92                 {
93                     e.printStackTrace();
94                 }
95             }
96         }
97     }
98
99 }

=============================Shared Preference储存机制=========================

保存:

1.获取SharedPreferences对象

SharedPreferences sp = getSharedPreferences("data", Context.MODE_PRIVATE);

2.获取SharedPreferences.Editor编辑器对象

Editor editor = sp.edit();

3.Editor对象中写入数据

editor.putString("key", data);

4.调用commit()方法提交数据,完成数据储存操作

editor.commit();//commit 使...承担v

读取:

1.获取SharedPreferences对象

SharedPreferences sp = getSharedPreferences("data", Context.MODE_PRIVATE);

2.获取数据

String data = sp.getString("key", "");

    实例代码:

 1 public class MainActivity extends Activity
 2 {
 3     private Button btn_savedata, btn_loaddata;
 4     private EditText et;
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState)
 7     {
 8         super.onCreate(savedInstanceState);
 9         setContentView(R.layout.activity_main);
10         btn_savedata = (Button) findViewById(R.id.btn_savedata);
11         btn_loaddata = (Button) findViewById(R.id.btn_loaddata);
12         et = (EditText) findViewById(R.id.et);
13
14         btn_savedata.setOnClickListener(new OnClickListener()
15         {
16
17             @Override
18             public void onClick(View v)
19             {
20                 String data = et.getText().toString();
21                 //获取SharedPreferences对象
22                 SharedPreferences sp = getSharedPreferences("data", Context.MODE_PRIVATE);
23                 Editor editor = sp.edit();//获取SharedPreferences.Editor编辑器对象
24                 editor.putString("key", data);//Editor对象中写入数据
25                 editor.commit();//调用commit()方法提交数据,完成数据储存操作   commit 使...承担v
26
27
28                 et.setText("");
29             }
30         });
31
32         btn_loaddata.setOnClickListener(new OnClickListener()
33         {
34
35             @Override
36             public void onClick(View v)
37             {
38                 //获取SharedPreferences对象
39                 SharedPreferences sp = getSharedPreferences("data", Context.MODE_PRIVATE);
40                 String data = sp.getString("key", "");//获取数据
41
42                 if(data.length() == 0)
43                 {
44                     data = "没有存储数据";
45                 }
46                 et.setText(data);
47             }
48         });
49     }
50 }
时间: 2024-10-28 21:14:24

第一章 数据与文件储存的相关文章

第一章 数据储存 1.1 位与位存储

1.1.1 布尔运算 在计算机中数据以0,1表示,称之为位. 位代表的是符号,而非数值.因为除了数字以外,字符.声音.图像等也都是以位来表示的.位代表什么,要结合数据的上下文环境 处理真假值的运算称之为布尔运算,布尔运算有三个基本运算:与AND.或OR.异或XOR.它们与加减乘除运算一样,属于两目运算.运算符两边分别有一个值类型为布尔型的输入值,最后输出一个布尔值. NOT运算也是布尔运算,它是单目运算.只有一个布尔型的输入,最终输出一个与输入相反的布尔型结果值 1.1.2   门和触发器 门是

对一千万条数据进行排序---编程珠玑第二版 第一章

本书第一章提出了一个看似简单的问题,有最多1000万条不同的整型数据存在于硬盘的文件中,如何在1M内存的情况下对其进行尽可能快的排序. 每个数字用4byte,1M即可存储250 000个数据,显然,只要每次对250 000个数据排序,写入到文件中即可,重复40次. 那么如何选出每次遍历的二十五万条数据呢?有如下两个策略: 1.对一千万条数据遍历40次,第i次遍历时,判断数是否属于[i*250000,i*250000+249999),如果是,则读入内存,当第i次遍历完成时,内 存中有了二十五万条数

萌新向Python数据分析及数据挖掘 第一章 Python基础 第十节 文件和异常

第一章 Python基础 第十节 文件和异常 从文件中读取数据 读取文件.文件路径   1 filename = 'pi_digits.txt' #文件名取个代号 2 #读取整个文件 3 with open(filename) as file_object: 4 contents = file_object.read()# 给内容取个代号 5 print(contents.rstrip()) 6 #逐行读取 7 with open(filename) as file_object: 8 for

第一章: 在RDB中的树结构数据

第一章: 在RDB中的树结构数据 在本章中,我将写一个基本的知识来理解这个问题 一  模型的作用 RBD处理树模型的作用总结为两点: 1  在RDB表中保存树的数据 2  效率的查询节点的相关节点 1  在RDB表中保存树的数据 我们可以定义的标准,该模型是否具有存储层次数据的功能 可以由保存的所有节点再现原有的层次结构 如果不能通过保存的数据再现原有的树结构,就不能说这个模型实现了树. 2  效率的查询节点的相关节点 通常,我们将数据保存到数据库中进行搜索,数据中保存了分层数据,可能会查询任何

阅读郭林《第一行代码》的笔记——第6章 数据存储全方案,详解持久化技术

瞬时数据是指那些存储在内存当中,有可能会因为程序关闭或其他原因导致内存被回收而丢失的数据.这对于一些关键性的数据信息来说是绝对不能容忍的,谁都不希望自己刚发出去的一条微博,刷新一下就没了吧.那么怎样才能保证让一些关键性的数据不会丢失呢?这就需要用到数据持久化技术了. 持久化技术简介 数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失.保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术则是提供了一种机

Laxcus大数据管理系统(2)- 第一章 基础概述 1.1 基于现状的一些思考

第一章 基础概述 1.1 基于现状的一些思考 在过去十几年里,随着互联网产业的普及和高速发展,各种格式的互联网数据也呈现爆炸性增长之势.与此同时,在数据应用的另一个重要领域:商业和科学计算,在各种新兴技术和产业需求的推动下,对数据存储和计算要求也日益提高,并且对计算数据的准确性和精度也远高于互联网数据.而在这些现象的背后,当前的数据计算早已经突破MB量级,GB成为常态,TB变得流行,正在向PB迈进的时候,面对如此庞大的数据量,如果管理和使用它们,满足各种计算需求,发现和筛选其中有价值的信息,通常

Oracle 10g 数据文件的第一个数据块结构

一.数据文件的第一个数据块结构kcvfh BBED> set file 1 FILE# 1 BBED> set block 1 BLOCK# 1 --查看第一个数据块的整体结构 BBED> map /v File: /u01/app/oracle/oradata/ORCL/datafile/o1_mf_system_bc7ld3sf_.dbf (1) Block: 1 Dba:0x00400001 ---------------------------------------------

第6章 数据存储全方案,详解持久化技术

第6章 数据存储全方案,详解持久化技术 所有的App都可以说是与数据打交道的,离开数据它们什么都不是.那么平时我们怎么存储一些关键的数据呢? 1 持久化技术简介 数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失.保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术则是提供了一种机制可以让数据在瞬时状态和持久状态之间进行转换. Android系统中主要提供了三种方式用于简单地实现数据持久化功能,即文件

Objective-C高级编程:iOS多线程及内存管理(第一章翻译)

写在翻译之前:当初看到这本书的时候,感觉深入浅出讲得比较到位,但是在市面上看到的翻译版本翻译的却没有原著的精髓和味道.所以产生了自己将其翻译一下给初学者一些便利的想法.所以才有了这个系列的第一章的翻译.目前剩余的部分依然在翻译过程中,估计不久之后就可以陆续地发出了. 因为本人的水平或者用词问题,本翻译难免有不周详或不正确之处.如果有人看到还望指出,我一定会尽力地修改那些不正确的部分,让更多的人可以看到更优质的资料. Chapter 1 Life before Automatic Referenc