网站首页 > 基础教程 正文
字节流与字符流
- 字节流简介:以字节为单位进行数据读写操作,常用于处理二进制数据,如图片、音频、视频等。主要类InputStream:所有字节输入流的抽象基类,定义了从输入流读取字节数据的基本方法。OutputStream:所有字节输出流的抽象基类,定义了向输出流写入字节数据的基本方法。
- 字符流简介:以字符为单位进行数据读写操作,用于处理文本数据,能更好地处理不同字符编码。主要类Reader:所有字符输入流的抽象基类,提供了从输入流读取字符数据的方法。Writer:所有字符输出流的抽象基类,提供了向输出流写入字符数据的方法。
输入流与输出流
- 输入流功能:用于从外部数据源(如文件、网络连接、控制台等)读取数据到程序中。分类字节输入流:如FileInputStream用于从文件中读取字节数据,BufferedInputStream可以在读取时提供缓冲功能,提高读取效率。字符输入流:如FileReader用于从文件中读取字符数据,BufferedReader可以按行读取字符数据,并提供缓冲功能。
- 输出流功能:用于将程序中的数据写入到外部目的地(如文件、网络连接、控制台等)。分类字节输出流:如FileOutputStream用于将字节数据写入文件,BufferedOutputStream可以在写入时提供缓冲功能,提高写入效率。字符输出流:如FileWriter用于将字符数据写入文件,BufferedWriter可以提供缓冲功能,并支持写入换行符等操作。
常见使用场景
- 文件操作字节流:复制或传输二进制文件,如图片、视频等,使用FileInputStream和FileOutputStream。字符流:读取或写入文本文件,如配置文件、日志文件等,使用FileReader和FileWriter。
- 网络通信字节流:在网络编程中,发送和接收二进制数据,如 HTTP 请求和响应中的数据,使用Socket的输入输出流。字符流:处理网络中的文本数据,如读取网页内容,可使用BufferedReader包装网络输入流。
- 控制台输入输出字节流:使用System.in和System.out进行字节级的控制台输入输出,如读取用户输入的字节数据或输出字节数据到控制台。字符流:使用BufferedReader和PrintWriter进行字符级的控制台输入输出,方便处理文本输入输出。
基本使用方法
以下是 Java IO 中一些常见的使用方法示例:
字节流读取文件
import java.io.FileInputStream;
import java.io.IOException;
public class ByteStreamFileReadExample {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("test.bin")) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fis.read(buffer))!= -1) {
// 处理读取到的字节数据
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
字节流写入文件
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteStreamFileWriteExample {
public static void main(String[] args) {
byte[] data = {1, 2, 3, 4, 5};
try (FileOutputStream fos = new FileOutputStream("test.bin")) {
fos.write(data);
} catch (IOException e) {
e.printStackTrace();
}
}
}
字符流读取文件
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class CharacterStreamFileReadExample {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) {
String line;
while ((line = br.readLine())!= null) {
// 处理读取到的文本行
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
字符流写入文件
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class CharacterStreamFileWriteExample {
public static void main(String[] args) {
try (BufferedWriter bw = new BufferedWriter(new FileWriter("test.txt"))) {
bw.write("Hello, World!");
bw.newLine();
} catch (IOException e) {
e.printStackTrace();
}
}
}
猜你喜欢
- 2025-03-12 Java程序员Python学习指南(中篇)
- 2025-03-12 从IO到NIO:Java数据传输的进阶之路
- 2025-03-12 智能库存管理系统:让仓库管理变得简单高效
- 2025-03-12 还不理解 Error 和 Exception 吗,看这篇就够了
- 2025-03-12 在Java里如何读取文件
- 2025-03-12 FileReader
- 03-12Java程序员Python学习指南(中篇)
- 03-12从IO到NIO:Java数据传输的进阶之路
- 03-12智能库存管理系统:让仓库管理变得简单高效
- 03-12java IO知识体系
- 03-12还不理解 Error 和 Exception 吗,看这篇就够了
- 03-12在Java里如何读取文件
- 03-12FileReader
- 03-12C语言指针专题第11讲:结构体指针
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)