10个Java输入输出函数,让你轻松读写文件和网络数据
在Java编程中,输入输出是非常重要的部分。Java提供了许多输入输出函数来读写文件和网络数据。本文将分享10个Java输入输出函数,让你轻松读写文件和网络数据。
1. FileInputStream和FileOutputStream
FileInputStream和FileOutputStream用于读写文件。以下是一个例子:
public class ReadFromFile {
public static void main(String args[])throws IOException{
InputStream in = new FileInputStream("input.txt");
int data = in.read();
while(data != -1){
System.out.print((char) data);
data = in.read();
}
in.close();
}
}
以上代码打开一个名为“input.txt”的文件,读取单独的字符,直到末尾(data == -1)。FileOutputStream类似,可以用来写一个字节到文件:
public class WriteToFile {
public static void main(String args[])throws IOException{
OutputStream out = new FileOutputStream("output.txt");
byte b[] = {'H', 'e', 'l', 'l', 'o'};
out.write(b);
out.close();
}
}
以上代码创建一个名为“output.txt”的文件,并写入字节序列“Hello”。
2. BufferedReader和BufferedWriter
BufferedReader和BufferedWriter用于在Java中读写缓冲区。以下是一个示例:
public class ReadLines {
public static void main(String args[]) throws IOException{
BufferedReader br = new BufferedReader(new FileReader("input.txt"));
String line = br.readLine();
while(line != null){
System.out.println(line);
line = br.readLine();
}
br.close();
}
}
以上代码打开一个名为“input.txt”的文件,并读取每一行。BufferedWriter类似,可以用来写一个字符串到文件:
public class WriteLines {
public static void main(String args[])throws IOException{
BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"));
bw.write("Hello");
bw.newLine();
bw.write("World");
bw.close();
}
}
以上代码创建一个名为“output.txt”的文件,并写入字符串“Hello”和“World”。
3. InputStreamReader和OutputStreamWriter
InputStreamReader和OutputStreamWriter用于将字节流转为字符流。以下是一个示例:
public class ReadFromInput {
public static void main(String args[])throws IOException{
InputStream in = System.in;
InputStreamReader r = new InputStreamReader(in);
BufferedReader br = new BufferedReader(r);
String line = br.readLine();
System.out.println(line);
br.close();
}
}
以上代码读取从计算机键盘输入的字符串。OutputStreamWriter类似,可以用来将字符流转换为字节流:
public class WriteToOutput {
public static void main(String args[])throws IOException{
OutputStream out = System.out;
OutputStreamWriter w = new OutputStreamWriter(out);
String str = "Hello World";
w.write(str);
w.flush();
w.close();
}
}
以上代码将字符串“Hello World”写到屏幕上。
4. DataInputStream和DataOutputStream
DataInputStream和DataOutputStream用于读写基本数据类型。以下是一个示例:
public class ReadBinary {
public static void main(String args[])throws IOException{
InputStream in = new FileInputStream("data.bin");
DataInputStream dis = new DataInputStream(in);
int i = dis.readInt();
double d = dis.readDouble();
boolean b = dis.readBoolean();
dis.close();
}
}
以上代码打开一个名为“data.bin”的文件,并读取一个整数,一个双精度浮点数和一个布尔值。DataOutputStream类似,可以用来写基本数据类型的值到文件:
public class WriteBinary {
public static void main(String args[])throws IOException{
OutputStream out = new FileOutputStream("data.bin");
DataOutputStream dos = new DataOutputStream(out);
int i = 10;
double d = 3.14;
boolean b = true;
dos.writeInt(i);
dos.writeDouble(d);
dos.writeBoolean(b);
dos.close();
}
}
以上代码创建一个名为“data.bin”的文件,并写入一个整数,一个双精度浮点数和一个布尔值。
5. Socket
Socket用于在Java中读写网络数据。以下是一个示例:
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 8888);
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
DataInputStream dis = new DataInputStream(in);
DataOutputStream dos = new DataOutputStream(out);
String request = "Hello";
dos.writeUTF(request);
String response = dis.readUTF();
System.out.println(response);
socket.close();
}
}
以上代码连接到端口号为8888的本地主机并发送一个字符串。ServerSocket类用于在服务器端接受客户端请求。
6. ObjectInputStream和ObjectOutputStream
ObjectInputStream和ObjectOutputStream用于读写Java对象。以下是一个示例:
public class Deserialize {
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("obj.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
Student s = (Student)ois.readObject();
System.out.println(s.getName());
System.out.println(s.getAge());
ois.close();
}
}
以上代码从名为“obj.txt”的文件中读取一个Student对象。Student类需要实现Serializable接口。ObjectOutputStream类用于将Java对象写到文件中。
7. ByteArrayInputStream和ByteArrayOutputStream
ByteArrayInputStream和ByteArrayOutputStream用于在Java中读写字节数组。以下是一个示例:
public class ByteStreams {
public static void main(String[] args) throws Exception {
String str = "Hello World!";
byte[] data = str.getBytes();
ByteArrayInputStream bais = new ByteArrayInputStream(data);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int ch;
while ((ch = bais.read()) != -1) {
char character = (char) ch;
baos.write(Character.toLowerCase(character));
}
System.out.println(baos);
baos.close();
}
}
以上代码将“Hello World!”字符串转换为小写并将结果写入ByteArrayOutputStream对象中。ByteArrayOutputStream类用于将字节数组写到文件中。
8. PipedInputStream和PipedOutputStream
PipedInputStream和PipedOutputStream用于在Java中读写管道流。以下是一个示例:
public class PipedStreams {
public static void main(String[] args) throws IOException {
PipedOutputStream pos = new PipedOutputStream();
PipedInputStream pis = new PipedInputStream(pos);
new Thread(() -> {
try {
pos.write("Hello World!".getBytes());
} catch (Exception e) { }
}).start();
int i = pis.read();
while (i != -1) {
System.out.print((char) i);
i = pis.read();
}
pis.close();
}
}
以上代码创建一个PipedInputStream和PipedOutputStream对象,并在两个不同的线程中写入和读取管道流。
9. Scanner
Scanner用于在Java中读取用户输入。以下是一个示例:
import java.util.Scanner;
public class ReadUserInput {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine();
System.out.println("Hello, " + name + "!");
scanner.close();
}
}
以上代码从用户输入中读取一个字符串,并将其用于向用户发送问候信息。
10. Console
Console用于在Java中读取密码和敏感信息。以下是一个示例:
import java.io.Console;
public class ConsoleDemo {
public static void main(String[] args) {
Console console = System.console();
if(console != null) {
console.printf("Please enter your password: ");
char[] password = console.readPassword();
console.printf("Your password was: %s%n", new String(password));
} else {
throw new RuntimeException("Console not available");
}
}
}
以上代码使用Console对象读取用户输入,包括密码,并在控制台上以星号代替密码。需要注意的是,Console对象可能不可用。
结论
以上是10个Java输入输出函数,让你轻松读写文件和网络数据。在Java中读写数据是一个重要的部分,掌握这些函数使得Java程序员可以更加高效地读写数据。需要注意的是,所有文件和网络资源在使用后都需要关闭。
