IO概述,文件字节输出流,文件字节输入流(FileOutputStream,FileInputStream类基本方法)

什么是IO?

Java中I/O操作主要是指使用 java.io 包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据

IO的分类

数据的流向分为:输入流和输出流。
输入流 :把数据从其他设备上读取到内存中的流。
输出流 :把数据从内存中写出到其他设备上的流。
数据的类型分为:字节流和字符流。
字节流 :以字节为单位,读写数据的流。
字符流 :以字符为单位,读写数据的流。

顶级父类

在这里插入图片描述

字节输出流(OutputStream)

在这里插入图片描述

FileOutputStream是OutputStream的一个子类,文件输出流,作用是向文件中写入数据

构造方法

public FileOutputStream(File file) :创建文件输出流以写入由指定的 File对象表示的文件。
public FileOutputStream(String name) : 创建文件输出流以指定的名称写入文件。

public static void main(String[] args) throws IOException {
	  //第一种构造方法
	  File file = new File("a.txt");
	  FileOutputStream fos = new FileOutputStream(file);
	  //第二种构造方法
	  FileOutputStream fos1 = new FileOutputStream("a.txt");
}

注意:建立文件的时候,如果没有文件,会创造这个文件,如果有,会覆盖这个文件。

写入字节/字节数组
  1. 写出字节: write(int b) 方法
  2. 写出字节数组: write(byte[] b) ,如果字节是一些字符,如汉字,可以使用getBytes()方法写入
  3. 流操作完毕必须调用close释放资源
public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("a.txt");
        fos.write(97); //写入一个字节
        byte [] bytes = {98,99,100};
        fos.write(bytes);  //写入三个字节
        fos.write("我爱java".getBytes());  //使用getBytes()方法
        fos.close(); //释放资源
}

打开文件查看结果
在这里插入图片描述

文件续写

上述写完发现,如果想在a.txt中继续写东西,可以用write方法,但文件会被重新创建,下面介绍文件如何续写,
public FileOutputStream(File file, boolean append) : 创建文件输出流以写入由指定的 File对象表示的 文件
public FileOutputStream(String name, boolean append) : 创建文件输出流以指定的名称写入文件

public static void main(String[] args) throws IOException {
        //第二种方法文件续写
        FileOutputStream fos = new FileOutputStream("a.txt",true);
        fos.write("我更爱生活".getBytes()); //续写内容
        fos.close(); //释放资源
}
续写前:abcd我爱java
续写后:abcd我爱java我更爱生活
换行

Windows系统里,换行符号是 \r\n 。

public static void main(String[] args) throws IOException {
        //第二种方法文件续写
        FileOutputStream fos = new FileOutputStream("a.txt",true);
        for(int i = 0;i<=2;i++){
            fos.write(100);
            fos.write("\r\n".getBytes());
        }
        fos.close(); //释放资源
}
文件查看结果:
		     abcd我爱java我更爱生活d
		     d
		     d
字节输入流(InputStream)

在这里插入图片描述

FileInputStream是InputStream的一个子类,文件输出流,作用是读取文件中的内容

构造方法

FileInputStream(File file) : 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系 统中的 File对象 file命名。
FileInputStream(String name) : 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件 系统中的路径名 name命名。
当你创建一个流对象时,必须传入一个文件路径。该路径下,如果没有该文件,会抛出 FileNotFoundException 。

读取字节/字节数组

读取字节用read()方法,返回值是一个int型的值,每次读取一个字节

public static void main(String[] args) throws IOException {
        //构造方法
        FileInputStream fis = new FileInputStream("a.txt"); //a.txt内容是abcd
        int read = fis.read(); //读取一个字节
        System.out.println((char)read);
}
打印结果:a


利用循环多次读取并且输出
public static void main(String[] args) throws IOException {
        //构造方法
        FileInputStream fis = new FileInputStream("a.txt"); //a.txt内容是abcd
        int read;
        while((read = fis.read())!=-1){
            System.out.println((char)read);
        }
}
打印结果:
		a
		b
		c
		d

读取字节数组

public static void main(String[] args) throws IOException {
        //构造方法
        FileInputStream fis = new FileInputStream("a.txt"); //a.txt内容是abcd
        byte[] bytes = new byte[2]; //先定义一个长度为2的字节数组
        fis.read(bytes);            //读取2个字节的内容
        System.out.println(new String(bytes)); //将读取的字节数组转化为字符串输入
        fis.close();
}
打印结果:ab

利用循环读取
public static void main(String[] args) throws IOException {
        //构造方法
        FileInputStream fis = new FileInputStream("a.txt"); //a.txt内容是abcd
        byte[] bytes = new byte[2]; //先定义一个长度为2的字节数组
        int len; //作为读取的有效个数
        while((len = fis.read(bytes))!=-1){
            System.out.println(new String(bytes));
        }
        fis.close();
}
打印结果:
		ab
		cd
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值