第一行代码 第六章 数据储存方案 - 文件存储
2017-08-12 22:52
375 查看
Android主要提供了3个方法实现数据的持久化功能
1、SharedPreference存储;2、文件存储;3、数据库存储
1、文件存储
它是android中最基本的一种数据存储方式。它不对存储的内容做任何的格式化处理,将数据原封不动地保存到文件中。
Context类中提供了openFileOutput()方法,用于将数据存储到指定的文件中。
该方法提供两个接收参数
第一个参数是文件名。这里指定的文件名不可以包含路径,因为所有的文件都默认存储到/data/data//file目录下。
第二个参数是文件的操作模式。提供两种模式:
1.MODE_PRIVATE:当指定同样文件名时,所写入的内容将会覆盖原文件的内容
2.MODE_APPEND:如果该文件已经存在,则在文件的末尾追加内容。
该方法返回一个FileOutputStream对象,得到这个对象之后,就可以使用Java流的方式将数据写入到文件中。
Java流方式:写入数据
1.通过openFileOutput()方法得到FileOutputStream对象;
2.借助FileOutputStream对象,构建一个OutputStreamWriter对象;
3.借助OutputStreamWriter对象,构建一个BufferedWriter对象
4.通过BufferedWriter对象提供的write()方法,就可以将文本内容写入到文件中。
实例:如何将一段文本内容保存到文件中
Context类还提供了一个openFileInput()方法,用于从文件中读取数据。
它只接收一个参数,即文件名
它返回一个FileInputStream对象,得到这个对象后就可以通过Java流的方式将数据读出来
Java流的方式:读取数据
1.通过openFileInput方法得到一个FileInputStream对象;
2.借助FileInputStream对象,构建InputStreamReader对象;
3.借助InputStreamReader对象,构建BufferedReader对象
4.通过BufferedReader进行一行一行地读取,并存放到StringBuilder对象中。
实例:如何从文件中读取文本数据
实例:读写文件
MainActivity.java
1、SharedPreference存储;2、文件存储;3、数据库存储
1、文件存储
它是android中最基本的一种数据存储方式。它不对存储的内容做任何的格式化处理,将数据原封不动地保存到文件中。
Context类中提供了openFileOutput()方法,用于将数据存储到指定的文件中。
该方法提供两个接收参数
第一个参数是文件名。这里指定的文件名不可以包含路径,因为所有的文件都默认存储到/data/data//file目录下。
第二个参数是文件的操作模式。提供两种模式:
1.MODE_PRIVATE:当指定同样文件名时,所写入的内容将会覆盖原文件的内容
2.MODE_APPEND:如果该文件已经存在,则在文件的末尾追加内容。
该方法返回一个FileOutputStream对象,得到这个对象之后,就可以使用Java流的方式将数据写入到文件中。
Java流方式:写入数据
1.通过openFileOutput()方法得到FileOutputStream对象;
2.借助FileOutputStream对象,构建一个OutputStreamWriter对象;
3.借助OutputStreamWriter对象,构建一个BufferedWriter对象
4.通过BufferedWriter对象提供的write()方法,就可以将文本内容写入到文件中。
实例:如何将一段文本内容保存到文件中
public void saveFile(){ String data = "Hello World!"; FileOutputStream mFileOutputStream = null; OutputStreamWriter mOutputStreamWriter = null; BufferedWriter writer = null; try{ mFileOutputStream = openFileOutput("data.txt", MODE_APPEND); mOutputStreamWriter = new OutputStreamWriter(mFileOutputStream) writer = new BufferedWrite(mOutputStreamWriter); writer.write(data); }catch(IOException e){ e.printStackTrace(); }finally{ try{ if(writer != null){ writer.close(); } }catch(IOException e){ e.printStackTrace(); } } }
Context类还提供了一个openFileInput()方法,用于从文件中读取数据。
它只接收一个参数,即文件名
它返回一个FileInputStream对象,得到这个对象后就可以通过Java流的方式将数据读出来
Java流的方式:读取数据
1.通过openFileInput方法得到一个FileInputStream对象;
2.借助FileInputStream对象,构建InputStreamReader对象;
3.借助InputStreamReader对象,构建BufferedReader对象
4.通过BufferedReader进行一行一行地读取,并存放到StringBuilder对象中。
实例:如何从文件中读取文本数据
public String load(){ FileInputStream fileInputStream = null; InputStreamReader inputStreamReader = null; BufferedReader reader = null; StringBuilder builder = new StringBuidler(); try{ fileInputStream = openFileInput("data.txt"); inputStreamReader = new InputStreamReader(fileInputStream); reader = new BufferedReader(inputStreamReader); String line = ""; while((line=reader.readLine()) != null){ builder.append(line); } }catch(IOException e){ e.printStackTrace(); }finally{ if(reader != null){ try{ reader.close(); }catch(IOException e){ e.printStackTrace(); } } } return builder.toString(); }
实例:读写文件
MainActivity.java
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btnWriteToFile; private Button btnReadFromFile; private EditText etIput; private TextView tvShowContent; private final static String FILE_NAME = "data.txt"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnWriteToFile = (Button)findViewById(R.id.btnWriteToFile); btnReadFromFile = (Button)findViewById(R.id.btnReadFromFile); etIput = (EditText)findViewById(R.id.etIput); tvShowContent = (TextView)findViewById(R.id.tvShowContent); btnWriteToFile.setOnClickListener(this); btnReadFromFile.setOnClickListener(this); String data = readFromFile(FILE_NAME); if(!TextUtils.isEmpty(data)){ etIput.setText(data); etIput.setSelection(data.length()); tvShowContent.setText(data); } } @Override public void onClick(View view) { switch (view.getId()){ case R.id.btnWriteToFile: String content = etIput.getText().toString(); writeToFile(FILE_NAME, content); break; case R.id.btnReadFromFile: String ret = readFromFile(FILE_NAME); tvShowContent.setText(ret); break; default:break; } } private void writeToFile(String filename, String content) { FileOutputStream fileOutputStream = null; OutputStreamWriter outputStreamWriter = null; BufferedWriter writer = null; try { fileOutputStream = openFileOutput("data.txt", MODE_APPEND); outputStreamWriter = new OutputStreamWriter(fileOutputStream); writer = new BufferedWriter(outputStreamWriter); writer.write(content); }catch (IOException e){ e.printStackTrace(); }finally { try { if(writer != null){ writer.close(); } }catch (IOException e){ e.printStackTrace(); } } } private String readFromFile(String filename){ FileInputStream fileInputStream = null; InputStreamReader inputStreamReader = null; BufferedReader reader = null; StringBuilder builder = new StringBuilder(); try{ fileInputStream = openFileInput(filename); inputStreamReader = new InputStreamReader(fileInputStream); reader = new BufferedReader(inputS a957 treamReader); String line = ""; while ((line = reader.readLine()) != null){ builder.append(line); } }catch (IOException e){ e.printStackTrace(); }finally { if(reader != null){ try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } return builder.toString(); } }
相关文章推荐
- 第一行代码 第六章 数据储存方案 - SQLite数据库存储
- 第一行代码 第六章 数据储存方案 - LitePal数据库存储
- 第一行代码 第六章 数据储存方案 - SharedPreferences存储
- 第一行代码-第6章 数据存储方案,持久化技术
- 第二行代码学习笔记——第六章:数据储存全方案——详解持久化技术
- 数据存储之文件存储——第一行代码Android学习笔记
- 第一行代码笔记 数据存储全方案
- 第一行代码笔记,第六章-----详解数据存储
- 调试代码的方法--将网络获取到的数据存储到文件中,然后打开文件看结果。
- 《第一行代码--Android》读书笔记之数据存储
- 数据存储之SharedPreferences存储——第一行代码Android学习笔记
- Centos7 修改mysql数据文件存储路径方案
- 【第一行代码-Android】学习(一)及在studio的迁移(5)存储数据
- [Android][第一行代码][第 6 章 数据存储]
- 数据储存(1):文件存储,保存至/data/data/"package_name"/files/目录下
- python网络爬虫与信息采取之下载存储数据(一)-----下载储存媒体文件模板
- HP存储raid5两块硬盘离线lvm下vxfs文件系统恢复数据方案
- HP存储raid5两块硬盘离线lvm下vxfs文件系统恢复数据方案
- TFT LCD数据存储为BMP文件的C语言代码
- HP MSA存储 raid组lvm下vxfs文件系统数据恢复方案