0
点赞
收藏
分享

微信扫一扫

文件输入(FileInputStream)、输出(OutputStream)流操作

ZGtheGreat 2022-02-13 阅读 53
java后端

1、InputStream

1、InputStream

InputStream就是Java标准库提供的最基本的输入流的抽象类

通过read()方法进行读取字节值

public abstract int read() throws IOException;

2、FileInputStream用于操作文件的IO类,是InputStream的子类,通过read()方法读取,直到返回-1

public void readInputStreamFile() throws IOException {
    try (InputStream in = new FileInputStream("demo.txt");){        
        int n;
        // 利用while同时读取并判断
        while ((n = in.read()) != -1) {
            System.out.println(n);
        }
    }
}
//注意此时try(obj)会自动调用close方法,如果是try{}需要调用in.close()关闭流

3、缓存
将读取的字节存入缓冲区,进行高效的读取。

int read(byte[] b):读取若干字节并填充到byte[]数组,返回读取的字节数
int read(byte[] b, int off, int len):指定byte[]数组的偏移量和最大填充数

public void readInputStreamFile() throws IOException {
    try (InputStream in = new FileInputStream("demo.txt");){        
        int n;
 		// 定义1024个字节大小的缓冲区:
        byte[] buffer = new byte[1024];	
        // 利用while同时读取并判断
        while ((n = in.read(buffer)) != -1) { 
            System.out.println(n);
        }
    }
}

2、OutputStream

1、OutputStream

OutputStream就是Java标准库提供的最基本的输出流的抽象类

通过write()方法将字节字写入到输出流

public abstract void write(int b) throws IOException;

OutputStream也有byte[]做缓存和一个flush()方法,该方法用于强制把缓冲区内容输出,通常情况下,我们不需要调用这个flush()方法,因为缓冲区写满了OutputStream数据或者调用close()方法前会调用该方法。

2、FileOutputStream

对文件进行写入操作

public void outputStreamFile() throws IOException {
    try (OutputStream output = new FileOutputStream("demo.txt")) {
    	// 单个字符写入
        output.write(72); // H
        output.write(101); // e
        output.write(108); // l
        output.write(108); // l
        output.write(111); // o
        output.close();
        
	    // 此方法一个个字节写入过于麻烦,可以利用getBytes()方法将字符串转为字节再进行操作
		String str = "hello";
		output.write(str.getBytes("UTF-8")); // hello
    }
}
举报

相关推荐

0 条评论