Java中的IO函数使用方法和示例
Java中的IO函数用于实现输入和输出任务。 Java中的IO类库提供了许多不同的IO函数来处理不同类型的输入/输出,包括文本,二进制,网络和控制台IO。
在本文中,我们将讨论Java中的IO函数的使用方法和示例。我们将从输入/输出流开始,以及如何读取和写入文件,控制台的输入输出,网络IO,以及扫描器和格式化器的使用等。
1. IO流
Java中IO流是一个基于流的模式,数据通过一个流缓冲区进行传输,即输入流通过一个输入流缓冲区来传输数据,而输出流通过一个输出流缓冲区来传输数据。Java中的IO流分为字节流和字符流两种。
a. 字节流
字节流支持以字节为单位进行读取和写入操作。Java中提供了两个字节流类:InputStream和OutputStream。
InputSteam:InputStream是所有字节输入流的抽象父类。
OutputStream:OutputStream 是所有字节输出流的抽象父类。
下面是一个读取文件内容的示例:
import java.io.*;
public class ReadFile {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("input.txt");
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
System.out.write(buffer, 0, len); // 打印到控制台
}
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
b. 字符流
字符流支持以字符为单位进行读取和写入操作,Java中提供了两个字符流类:Reader和Writer。
Reader:Reader 是所有字符输入流的抽象父类。
Writer:Writer 是所有字符输出流的抽象父类。
下面是一个写文件的示例:
import java.io.*;
public class WriteFile {
public static void main(String[] args) {
try {
FileWriter fw = new FileWriter("output.txt");
fw.write("Hello World!");
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2. 文件操作
Java中的文件操作是通过File类实现的,该类提供了许多用于操作文件和目录的方法。
下面是一个文件操作的示例:
import java.io.*;
public class FileOp {
public static void main(String[] args) {
File file = new File("input.txt");
if (file.exists()) {
System.out.println(file.getName() + " exists.");
System.out.println("Readable: " + file.canRead());
System.out.println("Writable: " + file.canWrite());
System.out.println("Size: " + file.length());
System.out.println("Path: " + file.getAbsolutePath());
} else {
System.out.println("File doesn't exist");
}
}
}
3. 控制台输入输出
Java中的控制台输入输出是通过控制台输入输出类(System.in和System.out)实现的。
下面是一个控制台输出的示例:
import java.io.*;
public class ConsoleOutput {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
下面是一个控制台输入的示例:
import java.util.Scanner;
public class ConsoleInput {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter something:");
String input = scanner.nextLine();
System.out.println("You entered: " + input);
}
}
4. 网络IO
Java中的网络IO主要是通过Socket和ServerSocket类实现的,这两个类提供了用于建立基于TCP协议的客户端和服务器的通信。
下面是一个基于TCP协议的客户端示例:
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 9999);
OutputStream os = socket.getOutputStream();
os.write("Hello Server!".getBytes());
os.flush();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
下面是一个基于TCP协议的服务器示例:
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(9999);
while (true) {
Socket socket = serverSocket.accept();
InputStream is = socket.getInputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = is.read(buffer)) != -1) {
System.out.println(new String(buffer, 0, len));
}
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
5. 扫描器和格式化器
Java中的扫描器和格式化器是用于处理文本输入和输出的类。
下面是一个扫描器的示例:
import java.util.Scanner;
public class TextScanner {
public static void main(String[] args) {
Scanner scanner = new Scanner("Hello 12345");
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
System.out.println(scanner.nextInt());
} else {
System.out.println(scanner.next());
}
}
scanner.close();
}
}
下面是一个格式化器的示例:
import java.util.Formatter;
public class TextFormatter {
public static void main(String[] args) {
Formatter formatter = new Formatter();
formatter.format("%s %d", "Hello", 12345);
System.out.println(formatter);
formatter.close();
}
}
总结
Java中的IO函数提供了处理不同类型的输入/输出的方法,包括文本、二进制、网络和控制台IO等。本文介绍了Java中IO函数的一些常用用法,希望可以对读者有所帮助。
