Java中IO流的理解

一.File类

File类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。File对象代表磁盘中实际存在的文件和目录。通过以下构造方法创建一个File对象。
常用构造方法:

new File(File parent,String child );
new File(String parent,String child);
new File(String pathName);

常用方法:

方法名描述
centered 文本居中right-aligned 文本居右
String getName()获取文件(夹)名
String getPath()获取文件(夹)路径
boolean exists()文件(夹)是否存在
boolean isFile()是否是一个文件
boolean isDirectory()是否是一个目录(文件夹)
boolean createNewFile()创建一个文件
boolean mkdir()创建一个具体的文件夹
boolean mkdirs()创建多级文件夹
boolean delete()删除某个文件(夹)
String [] list()返回某个文件夹下的所有文件(夹)名
File [] listFiles()获取某个文件夹下所有的文件(夹)

在这里插入图片描述

二.字节流
1.字节输入流

构造方法

new FileInputStream(String文件路径);
new FileInputStream(File文件对象);

使用步骤

1.创建输入流流对象
2.调用read方法
3.关闭流对象

read方法:从字节输入流中读取数据

//无参,返回一个字节,表示读取一个字节数据
    int read() 
//传入一个字节数组,表示将读到的字节存入数组中,返回存入的字节个数
    int read(byte[] bytes) 
//传入一个字节数组,数组下标,存放个数,表示将读到的字节存入数组,从数组的第off+1个元素开始存放,共存放len个。返回实际存入的字节个数。
    int read(byte[] b,int off,int len)

常用方法

//返回字节输入流中还有多少个可以读取的字节个数
int available();

案例:

创建一个文本文件,写入:
Hello world!
使用字节输入流读取该文件内容,并输出。

代码:

public static void main(String[] args) throws Exception {
        //获取绝对路径
        File f = new File("src/IO/a.txt");
        //构建流对象
        FileInputStream fil = new FileInputStream(f);
        //调用read方法
        byte[] bs = new byte[fil.available()];
        fil.read(bs);
        System.out.println(Arrays.toString(bs));
        //关闭资源流
        fil.close();
    }

运行结果:

[72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33]
2.字节输出流

构造方法

new FileOutputStream(String);
new FileOutputStream(String,Boolean);
new FileOutputStream(File);
new FileOutputStream(File,Boolean);

使用步骤:

1.创建输出流对象
2.调用write方法
3.关闭流对象

write方法:向字节输出流中写入数据

    //写入一个字节数据b
void write(int b); 
    //将字节数组b写入输出流中
void write(byte[] b);
    //从字节数组b的第off+1个元素开始,向输出流中写入len个字节
void write(byte[] b,int off,int len);

案例

将下面的语句写入一个文本文件中:
Hello world!

代码:

public static void main(String[] args) throws Exception {
        //获取绝对路径
        File f = new File("src/IO/b.txt");
        //构建流对象
        FileOutputStream fos = new FileOutputStream(f);
        //写入一个字节数组
        fos.write(("Hello world!").getBytes());
        //关闭资源流
        fos.close();
    }

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

复制文件:
	结合字节输入流和输出流,边读边写,将某个文件复制到磁盘另一个位置。

代码:

public static void main(String[] args) throws Exception {
        //获取绝对路径
        File f = new File("src/IO/a.txt");
        //构建流对象
        FileInputStream fis = new FileInputStream(f);
        //同时进行
        FileOutputStream fos = new FileOutputStream(new File("src/IO/b.txt"));
        //调用read方法
        byte[] bs = new byte[fis.available()];
        fis.read(bs);
        //调用write方法
        fos.write(bs);
        //关闭资源流
        fis.close();
        fos.close();
    }
三.字符流
1.字符输入流

构造方法:

new FileReader(String);
new FileReader(File);

使用步骤:

1.构建流对象
2.调用read方法
3.关闭流对象

read方法:从字符输入流中读取字符数据

    //读取一个字符,并返回读到的字符,如果没有读到,返回-1
int read();
    //读取到的字符存入字符数组c
read(char[] c);
    //读取到的字符存入字符数组c,从下标offset开始,个数为len
read(char[] c,int offset,int len);

案例:

创建一个文本文件,写入:葡萄美酒夜光杯,欲饮琵琶马上催。醉卧沙场君莫笑,古来征战几人回?
使用字符输入流读取文本内容,一句话一行输出在控制台。

代码:

public static void main(String[] args) throws Exception {
        FileReader flr = new FileReader("src/IO/a.txt");
        //8个字符为一行
        char[] cs = new char[8];
        while (flr.read(cs)!=-1){
            System.out.println(cs);
        }
        flr.close();
    }

运行结果:

葡萄美酒夜光杯,
欲饮琵琶马上催。
醉卧沙场君莫笑,
古来征战几人回?
2.字符输出流

构造方法:

new FileWriter(String);
new FileWriter(String,boolean);
new FileWriter(File);
new FileWriter(File,boolean);

write方法:向字符输出流中写入字符数据

//写入一个字符
    void write(int c) 
//写入一个字符串
    void write(String str)
//写入一个字符数组
    void write(char[] c)
//写入一个字符串,从off开始,写len个
    void write(String str,int off,int len)
//写入一个字符数组,从off开始,写len个
    void write(char[] c,int off,int len)

案例:

请把下面的话写入一个文本文件中:
   千山鸟飞绝,万径人踪灭。孤舟蓑笠翁,独钓寒江雪。

代码:

public static void main(String[] args) throws Exception {
       FileWriter fw = new FileWriter("src/IO/b.txt");
       fw.write("千山鸟飞绝,万径人踪灭。孤舟蓑笠翁,独钓寒江雪。");
       fw.close();
   }

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值