java中的输入/输出流(一)

一、首先了解一下File类
1.File类:文件类,不属于Java流系统,是对文件进行操作(新建、删除、重命名)的辅助类,是java.io包下与平台无关的文件和目录。

注:File类本身不能访问文件本身

文件:是程序中数据的初始源和目的地(主文件名+文件的扩展名)
2.构造方法
在这里插入图片描述
平常我们最常用的构造方法为:
File(String pathname);
①我们通常以字符串的形式传入一个文件的路径名(绝对/相对 路径)。
在这里插入图片描述
3.常用方法
在构造方法传参时,因为java中的反斜杠 ’\’是转义字符,所以当我们传入路径时,使用‘\’或者换为‘/’
在这里插入图片描述
思考:File类只能对文件进行一些简单的操作,如果我们需要读取文件内容或者改写文件内容呢?

二、I/O流是如何操作数据(体现形式为文件)的?
在这里插入图片描述
1.数据流:
在这里插入图片描述
2.数据流的分类:
①按照数据流方向的不同:输入流(写入操作)
(站在内存的角度)           输出流(读出操作)
②按处理数据单位的不同:字节流
                                           字符流
③按功能不同:节点流(对数据流的原始操作)
                         处理流(对节点流进行的操作)
三、I/O流的框架图
在这里插入图片描述
1.字节流和字符流的区别:

1.字节流读取的时候,读到一个字节就返回一个字节;字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。
2.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。

从图中我们可以看出:输入管道InputStream和Reader
                                    输出管道OutputStream和Reader
在帮助文档中我们可以看到:
InputStream、Reader、 OutputStream和Reader都为抽象类,它们下边的子类才是可以具体实现的类:
在这里插入图片描述
四、字节流 InputStream和 OutputStream
(1) FileInputStream
1.构造函数
在这里插入图片描述
例:获取输入流:

 File file=new File("test1.txt");
 FileInputStream f=new FileInputStream(file);//获取输入流

2.主要方法
假如文件内容为:一只小老虎fdfsgvdfs

 s=new byte[9];  //为了不浪费内存,我们可以开辟大小为  f.available()
 s1=new byte[f.available()];
 f.read(s);
 f.read(s1);
 f.close();   //读取完毕需关闭字节流

System.out.println(new String(s));
System.out.println(new String(s1));

输出结果为:一个汉字占三个字节。而在一次读取中,前边s已经读取的字节,s1读取时从后边开始读取。
在这里插入图片描述
所以当我们读取文件内容又不至于开辟过大空间时采取第二种。
在这里插入图片描述
(2) FileOutputStream
1.构造函数:
在这里插入图片描述
例:获取输出流

        File file=new File("test1.txt");
        String s="获取输出流";
        FileOutputStream f=new FileOutputStream(file);

2.主要方法:
在这里插入图片描述
我们调用write(byte[] b)将字符串转为byte[]

f.write(s.getBytes());
f.close();

运行结果:会覆盖之前的内容
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值