(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();}}






0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 绝地求生打不准怎么办 身份证号码变更后社保怎么办 社保与身份不符怎么办 年龄改了学籍怎么办 结婚证信息错误怎么办 六级身份证过期怎么办 身份号泄露了怎么办 身体证信息泄露怎么办 手机号被泄漏了怎么办 姓名和电话泄露怎么办 个人身份证信息泄露怎么办 身份号码泄露了怎么办 我身份证泄露了怎么办 身份证信息泄漏了怎么办 无锡身份证丢了怎么办 人在外地怎么办身份证 欠空放公司不还怎么办 兼职要身份证照片怎么办 身份证刷不了磁怎么办 身份证不能刷了怎么办 身份证指纹错了怎么办 指纹手机丢了怎么办 异地办理临时身份证怎么办 杭州办理外地身份证怎么办 办理身份证没有户口本怎么办 2018身份证掉了怎么办 双户口注销社保怎么办 常用户口被注销怎么办 刚到厦门怎么办身份证 新疆身份证丢了怎么办 技能证书丢了怎么办 16岁拍身份证怎么办 16岁以下怎么办身份证 办身份证要证明怎么办 15岁怎么办银行卡淘宝 满16岁怎么办银行卡 电脑最小化后不见了怎么办 满16周岁怎么办银行卡 给儿童办身份证怎么办 当兵前身份证号码不符怎么办 身份证后六位密码x怎么办