Java 语言 字节流 InputStream/OutputStream 文件读写的基础

Java阿木 发布于 20 天前 3 次阅读


摘要:

Java中的字节流是处理文件读写的基础,它提供了对文件内容的直接操作。本文将围绕Java字节流(InputStream/OutputStream)这一主题,从基本概念、常用类、操作方法以及实际应用等方面进行详细阐述,旨在帮助读者深入理解并掌握Java字节流的使用。

一、

在Java编程中,文件读写是常见的需求。字节流是Java中处理文件读写的一种方式,它允许程序以字节为单位对文件进行读写操作。本文将详细介绍Java字节流的相关知识,帮助读者更好地理解和应用。

二、基本概念

1. 字节流

字节流是Java中处理文件读写的基本方式,它以字节为单位对文件进行操作。字节流分为输入字节流和输出字节流。

2. 输入字节流

输入字节流用于从文件中读取数据,常见的类有InputStream、FileInputStream、BufferedInputStream等。

3. 输出字节流

输出字节流用于向文件中写入数据,常见的类有OutputStream、FileOutputStream、BufferedOutputStream等。

三、常用类

1. InputStream

InputStream是所有输入字节流的超类,它定义了读取数据的基本方法。

2. OutputStream

OutputStream是所有输出字节流的超类,它定义了写入数据的基本方法。

3. FileInputStream

FileInputStream是InputStream的子类,用于从文件中读取数据。

4. FileOutputStream

FileOutputStream是OutputStream的子类,用于向文件中写入数据。

5. BufferedInputStream

BufferedInputStream是InputStream的子类,它为InputStream添加了缓冲功能,提高了读取效率。

6. BufferedOutputStream

BufferedOutputStream是OutputStream的子类,它为OutputStream添加了缓冲功能,提高了写入效率。

四、操作方法

1. 读取数据

读取数据时,可以使用InputStream类及其子类的方法,如read()、read(byte[] b)、read(byte[] b, int off, int len)等。

2. 写入数据

写入数据时,可以使用OutputStream类及其子类的方法,如write(int b)、write(byte[] b)、write(byte[] b, int off, int len)等。

3. 文件复制

文件复制是字节流操作中常见的需求,以下是一个简单的文件复制示例:

java

import java.io.FileInputStream;


import java.io.FileOutputStream;


import java.io.IOException;

public class FileCopy {


public static void main(String[] args) {


String sourceFile = "source.txt";


String targetFile = "target.txt";

try (FileInputStream fis = new FileInputStream(sourceFile);


FileOutputStream fos = new FileOutputStream(targetFile)) {


byte[] buffer = new byte[1024];


int len;


while ((len = fis.read(buffer)) != -1) {


fos.write(buffer, 0, len);


}


} catch (IOException e) {


e.printStackTrace();


}


}


}


五、实际应用

1. 文件读取

以下是一个简单的文件读取示例:

java

import java.io.FileInputStream;


import java.io.IOException;

public class FileRead {


public static void main(String[] args) {


String filePath = "example.txt";

try (FileInputStream fis = new FileInputStream(filePath)) {


int b;


while ((b = fis.read()) != -1) {


System.out.print((char) b);


}


} catch (IOException e) {


e.printStackTrace();


}


}


}


2. 文件写入

以下是一个简单的文件写入示例:

java

import java.io.FileOutputStream;


import java.io.IOException;

public class FileWrite {


public static void main(String[] args) {


String filePath = "example.txt";


String content = "Hello, World!";

try (FileOutputStream fos = new FileOutputStream(filePath)) {


fos.write(content.getBytes());


} catch (IOException e) {


e.printStackTrace();


}


}


}


六、总结

本文详细介绍了Java字节流(InputStream/OutputStream)的相关知识,包括基本概念、常用类、操作方法以及实际应用。通过学习本文,读者可以更好地理解和应用Java字节流,为文件读写操作打下坚实的基础。

注意:在实际开发中,建议使用try-with-resources语句来自动关闭文件流,以避免资源泄漏。