Java学习

Day21
一、学习目标
1.IO
2.字节流
3.FileInputStream类
二、知识点
1.IO
当你编辑一个文本文件忘记了Ctrl+s后,文件可能就白白编辑了,当你从电脑上插入一个U盘,可以把一个视频拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。
我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input和输出output,即流向内存是输入流,流出内存的是输出流。Java中IO操作主要是指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做写出数据。

  • IO的分类
    根据数据的流向分为:输入流和输出流
    ●输入流:把数据从其他设备上读取到内存中的流
    ●输出流:把数据从内存中写出到其他设备上的流
    格局数据的类型分为:字节流和字符流
    ●字节流:以字节为单位,读写数据的流。
    ●字符流:以字符为单位,读写数据的流。
    在这里插入图片描述
    2.字节流
    一切皆为字节,—切文件数据(文本、图片、视频等)在存储时,都是二进制数字的形式保存,都是一个一个的字节,那么传输时一样如此。所以,字节流可以传输任意文件数据。在操作流的时候,我们要时刻明确,无论使用什么样的流对象,底层传输的始终为二进制数据。
  • 字节输出流【OutputStream】
    java.io.OutputStream抽象类是表示字节输出流的所有类的超类,将指定的字节信息写出到目的地。它定义了字节输出流的基本共性功能方法。
    ●public void close( ) :关闭此输出流并释放与此流相关联的任何系统资源。
    ●public void flush( ):刷新此输出流并强制任何缓冲的输出字节被写出。
    ●public void write(byte[ ] b):将b.length字节从指定的字节数组写入此输出流。
    ●public void write(byte[ ] b, int off,int,len):从指定的字节数组写入len字节,从偏移量off开始输出到此输出流。
    ●public abstract void write(int b):将指定的字节输出流。
    小贴士:close方法,当完成流的操作时,必须调用此方法,释放系统资源。
    3.FileInputStream类
    java.io.FileInputStream类是文件输入流,从文件中读取字节。
    构造方法:
  • FileInputstream(File file):通过打开与实际文件的连接来创建一个FilelnputStream,该文件由文件系统中的File对象file命名。
  • FileInputStream(String name):通过打开与实际文件的连接来创建—个 Filelnputstream,该文件由文件系统中的路径名name命名。
    当你创建一个流对象时,必须传入个文件路径。该路径下,如果没有该文件,会抛出FileNotFoundE xception。
  • 读取字节数据
    读取字节:read方法,每次可以读取一个字节的数据,提升为int类型,读取到文件末尾。
    三、应用运行
    1.IO
    代码示例
package demo01;
import java.io.FileInputStream;
import java.io.IOException;
public class Demo01InputStream {
	public static void main(String[] args) throws IOException {
		//1.创建FileInputStream 对象,构造方法中绑定要读取的数据
		FileInputStream fis= new FileInputStream("D:\\Professional knowledge\\java\\xiaoeclipse\\a.txt");
        //2.使用read 方法,读取问
		/*int len= fis.read();
		System.out.println(len);
		len= fis.read();
		System.out.println(len);
		len= fis.read();
		System.out.println(len);
		len= fis.read();
		System.out.println(len);
		len= fis.read();
		System.out.println(len);
		*/
		int len=0;
		while((len=fis.read())!=-1) {
			System.out.println((char)len);
		}
		//释放资源
		fis.close();
	}
}

运行结果
在这里插入图片描述
2.字节流
代码示例

package demo01;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;
public class Dwmo02InputStream {
	public static void main(String[] args) throws IOException {
		FileInputStream fis= new FileInputStream("D:\\Professional knowledge\\java\\xiaoeclipse\\a.txt");
		/*byte[] bytes=new byte[2];
		int len=fis.read(bytes);//65、66
		System.out.println("读取到的长度"+len);
		//System.out.println(bytes[0]);//取出数组里面的值
		//System.out.println(bytes[1]);
		//System.out.println(Arrays.toString(bytes));
		System.out.println(new String(bytes));
		len=fis.read(bytes);
		System.out.println("读取到的长度"+len);
		System.out.println(new String(bytes));
		len=fis.read(bytes);
		System.out.println("读取到的长度"+len);
		System.out.println(new String(bytes));
		len=fis.read(bytes);
		System.out.println("读取到的长度"+len);
		System.out.println(new String(bytes));
		*/
		byte[] bytes=new byte[8];
		int len=0;
		while((len=fis.read(bytes))!=-1) {
			System.out.println(len);
			System.out.println(new String(bytes));
		}
		fis.close();
	}
}

运行结果
在这里插入图片描述
3.FileInputStream类
代码示例

package demo02;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
public class Demo01Reader {
	public static void main(String[] args) throws IOException {
		FileReader fr= new FileReader("D:\\Professional knowledge\\java\\xiaoeclipse\\a.txt");
		/*int len=0;
		while((len=fr.read())!=-1){
			System.out.println((char)len);
		}*/
		char[] cs=new char[9];
		int len=0;
		while((len=fr.read(cs))!=-1){
			System.out.println(len);
			System.out.println(new String(cs));
		}
	}
}
package demo02;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Demo02Writer {
	public static void main(String[] args) throws IOException {
		FileWriter fw= new FileWriter("D:\\Professional knowledge\\java\\xiaoeclipse\\a.txt");
		fw.write(100);//需要被写入的字符还在缓冲区
		fw.flush();
		fw.write(101);
		fw.flush();
		fw.write(102);
		fw.flush();
		fw.write(103);
		fw.flush();
		fw.close();//如果你只写一个自己,那就可以直接用close,但是实际生活中可能或写多次数据
		fw.write(103);
	}
}

运行结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值