首页 > 代码库 > 文件存储
文件存储
数据存储在文件中,
Context类提供的一个openFileOutPut()方法,可以存储在文件中,该方法接受两个参数,第一个参数是存储的文件名称,第二个参数是文件的操作模式,MODE_PRIVATE是默认的操作模式,意思是指定相同名字的文件会覆盖之前的,MODE_APPEND是在文件内容的后面追加内容。
openFileOutput方法返回的是一个FileOutputStream 对象,无法直接写入文件,但是BufferedWriter 对象有写入方法,但是该类只接受write类,所以要new 一个OutputStreamWriter对象,里面在放一个FileOutputStream对象。然后调用BufferedWriter 类的write()方法,将数据写入文件。
在数据流交互的时候会有异常,记住要放在try/catch块里面。
public void save(String input) { FileOutputStream out; BufferedWriter bufferedWriter = null; try { out = openFileOutput("data", Context.MODE_PRIVATE); bufferedWriter = new BufferedWriter(new OutputStreamWriter(out)); bufferedWriter.write(input); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (bufferedWriter != null) bufferedWriter.close(); } catch (IOException e) { e.printStackTrace(); } } }
以上是将数据存储在文件中,所以有存就有读。读取文件的数据和存储数据相反,一个output 一个input。Context还是提供了openFileInput()方法,返回类型还是FileInputStream ,不能直接读取,还是BufferedReader类有readLine()方法读取,所以FileInputStream类要向BufferReader类转化,就要利用中间类(InputStreamReader),该中间类 既可以接受FielInputStream对象,又可以作为参数向BufferedReader类传递,BufferReader 对象创建成功,就可以调用readLine(),读取数据并且可以存储在 StringBuilder 的对象中,可以直接String对象获取存储信息。
public String Read() { FileInputStream inputStream; BufferedReader bufferedReader = null; StringBuilder stringBuilder = new StringBuilder(); try { inputStream = openFileInput("data"); bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = bufferedReader.readLine()) != null) { stringBuilder.append(line); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (bufferedReader != null) bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } return stringBuilder.toString().trim(); }
文件存储