Java输入输出

简介: Java输入输出

Java提供了多种用于输入输出的类和方法,主要包括字节流(InputStreamOutputStream)和字符流(ReaderWriter)。这些流类可以用于处理文件、网络、控制台等I/O操作。

字节流

字节流用于处理原始数据,例如图片、音频、视频等。Java中基本的字节流类是 InputStreamOutputStream

示例:读取文件内容到字节数组

java复制代码

 

import java.io.*;

 

 

 

public class ByteStreamExample {

 

public static void main(String[] args) {

 

File file = new File("example.txt");

 

try (InputStream is = new FileInputStream(file)) {

 

// 创建一个足够大的字节数组来存储文件内容

 

byte[] buffer = new byte[(int) file.length()];

 

// 读取文件内容到字节数组

 

int bytesRead = is.read(buffer);

 

if (bytesRead == -1) {

 

System.out.println("文件为空或读取失败");

 

} else {

 

// 处理字节数组,例如将其转换为字符串

 

String content = new String(buffer, 0, bytesRead);

 

System.out.println(content);

 

}

 

} catch (IOException e) {

 

e.printStackTrace();

 

}

 

}

 

}

字符流

字符流用于处理文本数据,它们使用字符而不是字节。Java中基本的字符流类是 ReaderWriter

示例:读取文件内容到字符串

java复制代码

 

import java.io.*;

 

 

 

public class CharacterStreamExample {

 

public static void main(String[] args) {

 

File file = new File("example.txt");

 

try (Reader reader = new FileReader(file)) {

 

// 使用BufferedReader提高读取效率

 

try (BufferedReader br = new BufferedReader(reader)) {

 

String line;

 

StringBuilder contentBuilder = new StringBuilder();

 

// 按行读取文件内容

 

while ((line = br.readLine()) != null) {

 

contentBuilder.append(line).append(System.lineSeparator());

 

}

 

// 获取文件内容字符串

 

String content = contentBuilder.toString();

 

System.out.println(content);

 

}

 

} catch (IOException e) {

 

e.printStackTrace();

 

}

 

}

 

}

控制台输入输出

Java还提供了用于控制台输入输出的类:Scanner 用于读取用户输入,System.out.printSystem.out.printlnSystem.err.printSystem.err.println 用于输出到控制台。

示例:从控制台读取输入

java复制代码

 

import java.util.Scanner;

 

 

 

public class ConsoleIOExample {

 

public static void main(String[] args) {

 

Scanner scanner = new Scanner(System.in);

 

System.out.print("请输入一个数字: ");

 

int number = scanner.nextInt();

 

System.out.println("你输入的数字是: " + number);

 

scanner.close();

 

}

 

}

缓冲流

为了提高I/O操作的效率,Java还提供了缓冲流类,如 BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter。这些缓冲流在内部维护了一个缓冲区,可以一次性读取或写入多个字节或字符,减少了与底层I/O设备的交互次数。

对象序列化

Java还提供了对象序列化和反序列化的机制,通过 ObjectOutputStreamObjectInputStream 类,可以将对象的状态写入字节流或从字节流中恢复对象的状态。这通常用于将对象的状态持久化到文件中,或者在网络传输中发送和接收对象。

在使用Java进行输入输出操作时,需要注意异常处理,因为I/O操作可能会因为各种原因(如文件不存在、网络中断等)而失败,抛出 IOException 或其子类异常。通常使用try-catch块来捕获和处理这些异常。

 

相关文章
|
6月前
|
Java
Java输入输出
Java输入输出
41 0
|
6月前
|
Java API
Java中文件与输入输出
Java中文件与输入输出
|
Java 测试技术 Apache
Java IO 与 NIO:高效的输入输出操作探究
输入输出(IO)是任何编程语言中的核心概念,而在Java中,IO操作更是应用程序成功运行的基石。随着计算机系统变得越来越复杂,对IO的要求也日益增加。在本文中,我们将探讨Java IO和非阻塞IO(NIO)的重要性以及如何在Java中实现高效的输入输出操作。
|
5月前
|
存储 监控 Java
深入探索Java BIO与NIO输入输出模型:基于文件复制和socket通信
深入探索Java BIO与NIO输入输出模型:基于文件复制和socket通信
|
6月前
|
存储 Java
Java的`java.io`包包含多种输入输出类
【5月更文挑战第2天】Java的`java.io`包包含多种输入输出类。此示例展示如何使用`FileInputStream`从`input.txt`读取数据。首先创建`FileInputStream`对象,接着分配一个`byte`数组存储流中的数据。通过`read()`方法读取数据,然后将字节数组转换为字符串打印。最后关闭输入流释放资源。`InputStream`是抽象类,此处使用其子类`FileInputStream`。其他子类如`ByteArrayInputStream`、`ObjectInputStream`和`BufferedInputStream`各有特定用途。
306 1
|
6月前
|
Java Linux C语言
Java中值得注意的『运算符、逻辑控制、输入输出』
Java中值得注意的『运算符、逻辑控制、输入输出』
|
6月前
|
存储 Java
Java输入输出:解释一下序列化和反序列化。
Java中的序列化和反序列化是将对象转换为字节流和反之的过程。ObjectOutputStream用于序列化,ObjectInputStream则用于反序列化。示例展示了如何创建一个实现Serializable接口的Person类,并将其序列化到文件,然后从文件反序列化回Person对象。
64 5
|
6月前
|
存储 监控 Java
Java输入输出:什么是NIO(New I/O)?
Java NIO是一种高效I/O库,特征包括非阻塞性操作、通道(如文件、网络连接)、缓冲区和选择器。选择器监控通道状态变化,通知应用程序数据可读写,避免轮询,提升性能。示例代码展示了一个使用NIO的服务器,监听连接、读取数据并处理客户端通信。
53 1
|
6月前
|
Java Linux C语言
【详识JAVA语言】输入输出
【详识JAVA语言】输入输出
46 1
|
6月前
|
存储 Java
JAVA简单输入输出
JAVA简单输入输出
33 0