输入/输出流介绍
Android中的文件存储操作是通过输入、输出流进行的,里面重要的类是FileOutputStream和FileInputStream,重要的方法是write和read,首先先来看write方法。
1.write方法
fos.write(byte[] buffer) // 将一个字节数组buffer写入到输出流中
fos.write(int b) //将一个整数b存入到输出流中
范例:
fos = mContext.openFileOutput("file.txt", Context.MODE_APPEND); fos.write(1);//将整数1写入到文件中 fos.write("string".getBytes());//将字节数组的buffer写入到输出流。
fos.close();
扩展:
File file = new File("dir/" ,"file.txt"); OutputStream output = new FileOutputStream(file);//通过fos得到输出流 InputStream input; byte buffer [] = new byte[5 * 1024];//设定字节数组,看一下子读取几个字节 while((input.read(buffer)) != -1){//输入流先读取一定的字符,然后让输出流将这些字符写入,接着再读取,直到没有字符了 output.write(buffer); } output.flush();//关闭输出流,断开连接
2.read方法
int read() //从此输入流中读取一个数据字节
int read(byte[] b) //从此输入流中将最多b.length个字节的数据读入到一个byte数组中去
int read(byte[] b,int off,int len) //从此输入流中将最多len个字节的数据存入到一个byte数组中去
范例:
FileInputStream fis = mContext.openFileInput("file.txt"); byte[] buffer = new byte[fis.available()];//fis.available()返回一个文件的大小 fis.read(buffer);
fis.close();
扩展1:
// 打开文件输入流 FileInputStream fis = mContext.openFileInput(fileName); byte[] buff = new byte[1024]; int hasRead = 0; StringBuilder sb = new StringBuilder(""); // 读取文件内容 while ((hasRead = fis.read(buff)) > 0) { sb.append(new String(buff, 0, hasRead)); } // 关闭文件输入流 fis.close(); return sb.toString();
扩展2:
File file = new File("dir/"+ "file.txt"); FileInputStream fis = new FileInputStream(file); BufferedReader br = new BufferedReader(new InputStreamReader(fis)); StringBuilder sb = new StringBuilder(""); String line = null;//定义读取一行字符后存储的String对象 //循环读取文件内容 while((line = br.readLine()) != null) { sb.append(line);//将读取的每一行补到StringBuilder后面 } br.close();//关闭BufferReader return sb.toString().trim();