(42)Java学习笔记——IO流 / 字节流
来源:互联网 发布:众筹源码 编辑:程序博客网 时间:2024/05/21 09:39
IO流
用来处理设备之间的数据传输
Java对数据传输采用流的方式
Java中IO流的分类:
流向分 :
--------| 输入流
--------| 输出流
数据类型分:
--------| 字节流
--------| 字符流 (为了方便操作文本数据)
IO流的常用基类:
字节流的抽象基类:
InputStream , OutputStream
字符流的抽象基类
Reader , Writer
由于是抽象类,所以要通过其子类来实例化。
每一种基类的子类都是以父类名作为后缀名。XXXReader , XXXWriter 等
FileOutputStream类的构造方法
FileOutputStream(File file)
FileOutputStream(String name)
字节流写数据的方式:
public void write(int b) //写一个字节
public void write(byte[ ] b) //写一个字节数组
public void wirte(byte[ ] b,int off , int len) //写一个字节数组的一部分
字节流输出流操作步骤:
A : 创建字节输出流对象
B: 写数据
C: 释放资源
范例:
package cn.itcast_01;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/* * 需求:往一个文本文件中输入一句话"hello,io" * 分析: * 要往文件中写一句话,所以采用字节输出流 */public class IODemo {public static void main(String[] args) throws IOException {//创建字节输出流对象//FileOutputStream(String name)FileOutputStream fos = new FileOutputStream("fos.txt");//调方法写数据//先把字符串hello,io转字节数组String s = "hello,io";byte[] chs = s.getBytes();fos.write(chs);//释放资源(关闭输出流,释放系统资源)不关闭就可以一直使用fos.close();}}
字节输出流实现数据换行
加入换行符\r\n
字节输出流实现数据的追加写入
用构造方法带第二个参数true,即可
FileOutputStream fos = new FileOutputStream("fos2.txt",true); //加入true参数,追加写入
FileOutputStream写数据加入异常处理:
范例:
package cn.itcast_01;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/* * 加入异常处理的字节输出流操作 * */public class FileOutputStreamDemo_02 {public static void main(String[] args) {//分开做异常处理//创建字节流对象FileOutputStream fos =null; //注意这个nulltry {fos = new FileOutputStream("fos3.txt");} catch (FileNotFoundException e) {e.printStackTrace();}//写入数据try {fos.write("java".getBytes());} catch (IOException e) {e.printStackTrace();}try {fos.close();} catch (IOException e) {e.printStackTrace();}}}FileInputStream 字节流
字节输入流操作步骤:
A / 创建字节流输入流对象
B/ 调用read()方法读取数据,并把数据显示在控制台
C / 释放资源
构造函数
FileInputStream(String name)
读取数据的方式:
A / int read() // 一次读取一个字节
B / int read(byte[ ] b) // 一次读取一个字节数组
范例:
package cn.itcast_02;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;/* * 字节输入流操作步骤:A / 创建字节流输入流对象B/ 调用read()方法读取数据,并把数据显示在控制台C / 释放资源读取数据的方式:A / int read()B / int read(byte[ ] b) */public class InputStreamDemo {public static void main(String[] args) throws IOException {//创建字节流输入流对象FileInputStream fis = new FileInputStream("fis.txt");/*//调用read()方法读取数据,并把数据显示在控制台//第一次读取int by = fis.read();System.out.println((char)by);//第二次读取int by2 = fis.read();System.out.println((char)by2);//第三次读取int by3 = fis.read();System.out.println((char)by3);System.out.println("---------------------");*//*//用循环改进,如何控制循环条件?int by = fis.read();while(by != -1){System.out.print((char) by);by = fis.read();}*///标准版代码int by = 0;//读取,赋值,判断while ((by = fis.read()) != -1 ){System.out.print((char) by);}//释放资源fis.close();}}
字节流复制文件:
单字节复制:
package cn.itcast_03;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/* * CopyFile * 从哪里来,到哪里去 * 范例: * 从a.txt ------读取数据------FileInputStream * 到 b.txt------写数据------FileOutputStream * */public class CopyFileDemo {public static void main(String[] args) throws IOException {//封装数据源FileInputStream fis = new FileInputStream("f:\\a.txt");//封装目的地FileOutputStream fos = new FileOutputStream("g:\\b.txt");//循环读取数据int by = 0;while ((by=fis.read())!= -1){fos.write(by);}//释放资源fos.close();fis.close();}}字节数组复制:
package cn.itcast_03;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/* * 需求:把f:\\a.txt 内容复制到g:\\b.txt中 * * 数据源:f:\\a.txt ----读取数据-----FileInputStream * 目的地:g:\\b.txt----写入数据------FileOutputStream */public class CopyFileDemo_02 {public static void main(String[] args) throws IOException {//封装数据源FileInputStream fis = new FileInputStream("f:\\a.txt");FileOutputStream fos = new FileOutputStream("g:\\b.txt");//复制数据byte[] bys =new byte[1024];int len = 0;while((len = fis.read(bys))!=-1){fos.write(bys, 0, len);}//释放资源fos.close();fis.close();}}
字节流复制图片:
package cn.itcast_03;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/* * CopyFile复制图片 * 数据源:F:\\马士兵.jpg------读取-----FileInputStream * 数据源:g:\\msb.jpg-----写出-----FileOutputStream */public class CopyFileDemo_03 {public static void main(String[] args) throws IOException {//封装数据源FileInputStream fis = new FileInputStream("F:\\马士兵JAVA.jpg");FileOutputStream fos = new FileOutputStream("g:\\msb.jpg");//复制数据byte[] bys = new byte[1024];int len = 0;while((len = fis.read(bys))!=-1){fos.write(bys, 0, len);}//释放资源fos.close();fis.close();}}
___________________________________
字节缓冲区流
BufferedOutputStream 字节缓冲输出流
构造方法:
BufferedOutputStream(OutputStream out)
不传递一个具体的文件或者文件路径,传递的是一个OutputStream抽象类对象。
字节缓冲区流仅仅提供缓冲区,真正的读写操作还得靠基本的流对象实现。
范例:
package cn.itcast_04;import java.io.BufferedOutputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/* * BufferedOutputStream * */public class BufferedOutputStreamDemo {public static void main(String[] args) throws IOException {//BufferedOutputStream(OutputStream out) 构造方法,传递的是抽象类/*FileOutputStream fos = new FileOutputStream("bos.txt");BufferedOutputStream bos = new BufferedOutputStream(fos);*///简单写法:BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("bos.txt"));//写数据bos.write("hello".getBytes());//释放资源bos.close();}}
BufferedInputStream 字节缓冲输入流
构造方法:
BufferedInputStream(InputStream in)
不传递一个具体的文件或者文件路径,传递的是一个InputStream抽象类对象。
字节缓冲区流仅仅提供缓冲区,真正的读写操作还得靠基本的流对象实现。
范例:
package cn.itcast_04;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;/* * BufferedInputStream */public class BufferedInputStreamDemo {public static void main(String[] args) throws IOException {//BufferedInputStream(InputStream in)BufferedInputStream bis = new BufferedInputStream(new FileInputStream("bos.txt"));//读取数据byte[] bys = new byte[1024];int len = 0;while((len = bis.read(bys))!= -1){System.out.print(new String(bys,0,len));}//释放资源bis.close();}}
- (42)Java学习笔记——IO流 / 字节流
- Java IO学习笔记:字节流
- Java IO学习笔记:字节流
- Java IO学习笔记:字节流
- [学习笔记]Java IO之字节流
- [学习笔记]Java IO之字节流
- java笔记-io字节流
- 学习笔记之java.io包中的字节流(下)—— FilterInputStream和FilterOutputStream
- java学习笔记IO输入与输出——IO流概述及字节流(2)
- Java学习笔记之IO流中的文件字节流
- Java IO学习笔记之字节流和字符流
- 黑马程序员----java IO-字节流 学习笔记
- Java学习笔记之 IO包 字节流
- Java学习笔记之IO(二):InputStream输入字节流
- Java学习笔记之IO(三):OutputStream输出字节流
- java学习笔记 IO学习笔记2 IO流-字节流
- 字节流--IO学习笔记(二)
- java笔记-IO流-字节打印流
- js中的操作符
- google已经证实R和Go在机器学习比python表现优秀
- oracle linux 7.3 配置本地ISO yum 源
- centos服务器搭建-jdk-8u112
- 日程确定与完成-日事清
- (42)Java学习笔记——IO流 / 字节流
- 1-安卓底层-基础
- 二叉树的最小深度
- centos服务器搭建-MySQL-Binaries-5.6.35
- 22: Candy
- 2-安卓底层-java实现调用linux系统调用
- 如何访问谷歌学术?XX-net
- 深度增强学习前沿算法思想【DQN、A3C、UNREAL,简介】
- Java面向对象的程序设计