javaIO FileInputStream&&FileOutputStream(文件输入输出流)

本文介绍Java中的FileInputStream和FileOutputStream类的基本用法,包括如何读取文件内容为字节流和如何将字节流写入文件。文章通过具体示例展示了使用这两种类进行文件操作的方法,并强调了批量读写字节相较于逐字节操作的优势。
摘要由CSDN通过智能技术生成

FIleOutputStream

The Java FileInputStream class, java.io.FileInputStream, makes it possible to read the contents of a file as a stream of bytes. The Java FileInputStream class is a subclass of Java InputStream. This means that you use the Java FileInputStream as an InputStream (FileInputStream behaves like an InputStream).

FileOutputStream案例

package Bean;

import java.io.*;

public class InputStreamBean {
    public static void main(String[] args) {

//使用try括号包括需要释放的资源,该资源就会自动释放...
        try (InputStream inputStream = new FileInputStream("C:\\Users\\psdxdgJ6DT\\Desktop\\input.txt");
        ) {
            int data = 0;
            while (data != -1) {
                data = inputStream.read();
                if (data != -1) {
                    System.out.print((char) data);
                } else {
                    break;
                }
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

FileInputStream构造函数

第一个构造函数将String作为参数。 此字符串应包含文件系统中要读取的文件所在的路径。
第二个FileInputStream构造函数将File对象作为参数。 File对象必须指向您要读取的文件

read method

您可以使用read()方法,就像InputStream的read()方法一样

read(byte[])

作为InputStream,FileInputStream还具有两个read()方法,可以将数据读入字节数组。 顺便说一下,这些方法是从Java InputStream类继承的。 这些方法是:

int read(byte[])
int read(byte[], int offset, int length)

读取性能

一次读取一个字节数组要比一次从Java FileInputStream读取单个字节快。 通过读取字节数组而不是一次读取单个字节,该差异很容易成为性能提高的10倍或更多。

使用缓冲数组的输入流

关闭一个FileInputStream

将FileInputStream转换为Reader

Java FileInputStream是基于字节的数据流。 您可能知道,Java IO API还具有一个基于字符的输入流集,称为“读取器”。 您可以使用Java InputStreamReader将Java FileInputStream转换为Java Reader

        try (InputStream inputStream = new FileInputStream("C:\\Users\\psdxdgJ6DT\\Desktop\\input.txt");
        ) {

            Reader reader = new InputStreamReader(inputStream);

FileOutputStream

The Java FileOutputStream class, java.io.FileOutputStream, makes it possible to write a file as a stream of bytes. The Java FileOutputStream class is a subclass of Java OutputStream meaning you can use a FileOutputStream as an OutputStream.

FIleOutputStream案例(写入单个字节与写入字节数组)

package Bean;

import java.io.*;

public class InputStreamBean {
    public static void main(String[] args) {

//使用try括号包括需要释放的资源,该资源就会自动释放...
        try (OutputStream outputStream = new FileOutputStream("C:\\Users\\psdxdgJ6DT\\Desktop\\output4.txt", false);
        ) {

//            写入字节数组
//            String hello = "HelloWorld,China,American,Japan,Korea";
//            byte[] bytes = hello.getBytes();
//            outputStream.write(bytes);

//          写入单个字节值
            outputStream.write(123);


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


FileOutputStream构造函数

第一个构造函数采用String,其中包含要写入的文件的路径。
第二个FileOutputStream构造函数接受一个Java File对象,该对象指向文件系统中的文件。

覆盖或者追加文件

覆盖文件:

OutputStream outputStream = new FileOutputStream("C:\\Users\\psdxdgJ6DT\\Desktop\\output4.txt", false);

追加文件:

OutputStream outputStream = new FileOutputStream("C:\\Users\\psdxdgJ6DT\\Desktop\\output4.txt", true);

Write

要将数据写入Java FileOutputStream,可以使用其write()方法。 write()方法采用一个int,其中包含要写入的字节的字节值。

Writing Byte Arrays

由于Java FileOutputStream是OutputStream的子类,因此您也可以将字节数组写入FileOutputStream,而不是一次只写入一个字节

写入性能

将字节数组写入Java FileOutputStream比一次写入一个字节更快。 加速可能非常显着-高达10倍甚至更高。 因此,建议尽可能使用write(byte [])方法。

使用透明缓冲的FileOutputStream

(略)

flush

调用flush()将确保到目前为止已写入FileOutputStream的所有数据也已完全写入磁盘

Closing a FileOutputStream(略)

将FileOutputStream转换为Write(略)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值