字节流

来源:互联网 发布:android 仿淘宝分类 编辑:程序博客网 时间:2024/05/16 05:52

一、FileInputStream字节输入流,读取文件内容。

例:

package io.pinttai;import java.io.File;import java.io.FileInputStream;import java.io.IOException;public class MyInputStream {public static void main(String[] args)  {String name="F:"+File.separator+"test.txt";System.out.println(readStrFormFile(name));}public static String readStrFormFile(String fileName) {try {      FileInputStream fis=new FileInputStream(fileName);      byte[] bytes;      bytes = new byte[fis.available()];      fis.read(bytes);      String content=new String(bytes);      fis.close();      return content;    } catch (IOException e) {      e.printStackTrace();    }return null;}}


读的技巧:

读取部分字节 fis.read(bytes,off,len),其中off为起点,len为读取长度。也可以fis.skip(long n)从输入流中跳过并丢弃n个字节的数据,再fis.read(bytes,0,7)来读取。

注意,这里如果是读取中文,UTF-8 的中文占3个字节,而gbk和UTF16的中文占2个字节。

二、FileOutputStream,字节输出流,写入。

例:

package io.pinttai;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;public class MyOutputStream {public static void main(String[] args) throws IOException {String fileName="F:"+File.separator+"test.txt";String content="my name is:\r\n"+"hello";setFile(fileName, content);}public static void setFile(String fileName,String content) throws IOException{FileOutputStream fileOutputStream=new FileOutputStream(fileName);fileOutputStream.write(content.getBytes());fileOutputStream.close();}}

如果是追加内容,FileOutputStream fileOutputStream=new FileOutputStream(fileName,true);即可。

写的技巧:

将指定byte数组从偏移量off开始的len个字节写入此输出流write(byte[],inf off,int len);

void flush();//刷新此输出流,并强制将所有已缓冲的输出字节写入该流中;

\r\n是换行写入。

三、缓冲式的字节输入输出流:BufferedInputStream和BufferedOutputStream,方法同上。只不过引入了缓冲区,效率更高。