IO流

文件操作--File
练习使用listFiles()方法

    @Test
        public void testListFiles() {
//            1.使用File类构建表示当前目录的file对象
            File dir = new File(".");
//            2.使用File类的listFiles方法获取当前目录下的所有内容,文件和目录
            File[] subs = dir.listFiles();
//            3.遍历listFiles方法返回的数组,以便查看内容
            for (File sub:subs) {
                System.out.println(sub);
            }
        }

练习使用FileFilter接口
问题:输出一个目录中所有扩展名为.txt的文件

测试RandomAccessFile类的read(byte[])和write(byte[])方法
需求:
1.使用RandomAccessFile的write(byte[])方法向文件raf.txt文件写入字符串"HelloWorld"
public void testWriteByteArray() throws Exception{
//        1.创建能够读写的RandomAccessFile类的对象
        RandomAccessFile raf = new RandomAccessFile("raf.txt","rw");
//        2.使用write(byte[])方法将字符串"HelloWorld"写入
        byte[] buf = "HelloWorld".getBytes();
        raf.write(buf);
//        查看大小
        System.out.println(raf.length());
        raf.close();
    }
    
2.使用RandomAccessFile的read(byte[])方法向文件raf.txt文件写入字符串"HelloWorld"

基本IO操作
1.1IS与OS
输入与输出
.我们编写的程序除了自身会定义一些数据信息外,经常还会引用外界的数据,或是将自身的
数据发到外界,比如,我们编写的程序读取一个文本文件,又或者我们想要将程序中的某些数据
写入到一个文件中,这时我们就要使用输入与输出

什么是输入:
-输入是一个从外界进入到程序的方向,通常我们需要将"读取"外界的数据时,使用时呼入,所以
输入是用来读取数据的
什么是输出:
-输出时一个从程序发送到外界的方向,通常我们需要"写出"数据到外界时,使用输出,所以输出
是用来写出数据的

节点流与处理流
.按照流是否直接与特定的地方(如磁盘,内存,设备等)相连,分为节点流和处理流两类

节点流:可以从或向一个特定的地方(节点)读写数据
处理流:是对一个已存在的流的连接和封装,通过所封装的功能调用实现数据读写的

.处理流的构造方法总是要到一个其他的流对象做参数,一个流对象经过其他流多次保装,称为
流的连接

.通常节点流也称为低级流.
.通常处理流也称为高级流或过滤流

IS和OS的常用方法:
inputStream是所有字节输入流的父类,其定义了基础的读取方法
常用的方法如下:
int read()
读取一个字节,以int形式返回,该int值的"低八位"有效,若返回值为-1则表示文件已到末尾

-int read(byte[] d)
尝试最多读取给定数据的length个字节并存入该数组,返回值为实际读取到的字节量

OutputStream是所有字节输出流的父类,其定义了基础的写出方法,常用的方法如下
-void write(int d);
写出一个字节,写的就是给定的int的低八位

-void write(byte[] d)
将给定的字节数组中的所有字节全部写出

文件流
FileOutputStream是文件的字节输出流,我们使用该流可以以字节为单位,将数据写入文件
.构造方法:
FileOutputStream(File file);
创建一个向指定file对象表示的文件中写出数据的文件输出流

FileOutputStream(File name);
创建一个向具有指定名称的文件中写出数据的文件输出流对象

ps:若指定的文件已经包含内容,那么当使用FOS对齐写入数据时,会将该文件中原有的数据全部
清除

创建FOS对象(追加模式)
若想在文件的原有数据之后追加新数据则需要使用一下构造方法创建FOS
FileOutputStream(File file,boolean append);
创建一个想指定的file对象表示的文件中写出数据的文件输出流

FileOutputStream(String filename,boolean append);
创建一个向具有指定的文件中写出数据的文件输出流对象

ps:以上两个构造方法中,第二个参数若为true,name通过FOS写出的数据都是在文件末尾追加的

需求:
使用FileOutputStream类的对象向文件写入数据,详细如下
1.使用覆盖写的方式,向raf.txt写入"你好世界"
2.在步骤一的基础上,使用追加写的方式,向文件raf.txt写入字符串"HelloWorld"

创建FIS对象
.FileInputStream是文件的字节输入流,我们使用该流可以以字节为单位从文件中读取数据
.FileInputStream(File file)
创建一个从指定的file对象表示的文件中读取数据

.FileInputStream(String name)
创建用于读取给定的文件系统中的路径名name所指定的文件的文件输入流

read()和write(int d)方法
FileInputStream继承自InputStream,其提供了以字节为单位读取文件数据的方法read
-int read();
从此输入流中读取一个数据字节,若返回-1则表(end of file)EOF

-int read(byte[] b)
从此输入流最多b.length个字节的数据读取到字节数组b中

测试FIS对象并读取文件数据.
使用FileInputStream类的对象从文件raf.txt中读取字符串"你好"

实现文件复制:
使用FileOutputStream类和FileInputStream类实现文件复制,详细要求如下:
1.使用FileOutputStream类的write(int)方法和FileInputStream类的read方法复制
raf.txt文件为raf_copy.txt文件

2.使用FileOutputStream类的write(byte[])方法和FileInputStream类的read(byte[])
方法复制raf.txt文件为raf_copy.txt文件
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值