-
字节流的父类(抽象类):
- InputStream:字节输入流
- public int read(){}
- public int read(byte[] b){}
- public int read(byte[] b, int off, int len){}
- OutputStream:字节输出流
- public void write(int n){}
- public void write(byte[] b){}
- public void write(byte[] b, int off, int len){}
- InputStream:字节输入流
-
文件字节流
-
FileInputStream:文件输入流
- public int read(byte[] b) //从流中读取多个字节,将读到内容存入b数组,返回实际读到的字节数;如果达到文件的尾部,则返回-1
/* D:\aaa.txt内容: aaabbbccddd */ //创建FileInputStream,指定读取路径 FileInputStream fis = new FileInputStream("D:\\aaa.txt"); //抛出异常 //读取文件 //1.单个字节读取 int data = 0; while((data = fis.read())!=-1){ System.out.print((char)data); //aaabbbccddd } //2.一次读取多个字节 byte[] buf = new byte[3]; //一次读三个字节 int count = 0; while((count = fis.read(buf)) != -1){ System.out.print(new String(buf,0,count)); } //关闭 fis.close();
-
FileOutputStream:文件输出流
- public void write(byte[] b) //一次写多个字节,将b数组中所有字节,写入输出流
//创建FileOutputStream,指定输出路径 FileOutputStream fos = new FileOutputStream("D:\\bbb.txt",true); //抛出异常,true表示每次写入不覆盖上次内容,接着写入 //写入文件 //一次写一个 fos.write(97); fos.write('b'); fos.write('c'); //一次写多个 String s = "hello,world!"; fos.write(s.getBytes()); //关闭 fos.close(); /* 输出到D盘文件bbb abchello,world! */
-
复制文件
//创建流 //文件字节输入流 FileInputStream fis = new FileInputStream("D:\\001.jpg"); //抛出异常 //文件字节输出流 FileOutputStream fos = new FileOutputStream("D:\\002.jpg"); //抛出异常 //一边读一边写 byte[] buf = new byte[1024]; int count = 0; while((count = fis.read(buf)) != -1){ fos.write(buf,0,count); } //关闭 fis.close(); fos.close();
-
-
字节缓冲流
- 缓冲流:BufferIntputStream/BufferOutputStream
- 提高IO效率,减少访问磁盘的次数
- 数据存储在缓冲区中,flush是将缓存区的内容写入文件中,也可以直接close
例1:BufferIntputStream的使用:
/* D:\aaa.txt内容: aaabbbccddd */ //创建BufferIntputStream,指定读取路径 FileInputStream fis = new FileInputStream("D:\\aaa.txt"); //抛出异常 BufferIntputStream bis = new BufferIntputStream(fis); //读取文件 //1.默认缓冲区一次读取8k int data = 0; while((data = bis.read())!=-1){ System.out.print((char)data); //aaabbbccddd } //2.一次读取多个字节 byte[] buf = new byte[1024]; //一次读1k int count = 0; while((count = bis.read(buf)) != -1){ System.out.print(new String(buf,0,count)); } //关闭 bis.close();
例2:BufferOutputStream的使用
//创建字节输出缓冲流 FileOutputStream fos = new FileOutputStream("D:\\buffer.txt"); BufferOutputStream bos = new BufferOutputStream(fos); //写入文件 for(int i = 0; i < 10; i++){ bos.write("你好! ".getBytes()); //写入8k的缓冲区 bos.flush(); //刷新到硬盘 } //关闭(内部调用flush方法) bos.close();
- 缓冲流:BufferIntputStream/BufferOutputStream
字节流
最新推荐文章于 2024-10-01 18:51:18 发布