全面解析 Java IO 常见类的使用

目录

全面解析 Java IO 常见类的使用

磁盘操作

File 类

创建文件和目录

列出目录中的文件

字节操作

FileInputStream 和 FileOutputStream

读取文件中的字节数据

将字节数据写入文件

字符操作

FileReader 和 FileWriter

读取文件中的字符数据

将字符数据写入文件

对象操作

ObjectInputStream 和 ObjectOutputStream

序列化对象

反序列化对象

网络操作

Socket 和 ServerSocket

创建一个简单的服务器

创建一个简单的客户端

总结


全面解析 Java IO 常见类的使用

Java IO 是 Java 核心库的重要组成部分,用于处理各种输入和输出操作。本文将介绍 Java IO 中常见类的使用,包括磁盘操作、字节操作、字符操作、对象操作和网络操作。通过这些示例,您可以更好地理解和应用 Java IO。

磁盘操作

File 类

File 类用于表示文件和目录路径,并提供了丰富的方法来操作文件和目录。

创建文件和目录
import java.io.File;
import java.io.IOException;

public class FileExample {
    public static void main(String[] args) {
        File file = new File("example.txt");
        File dir = new File("exampleDir");

        try {
            if (file.createNewFile()) {
                System.out.println("File created: " + file.getName());
            } else {
                System.out.println("File already exists.");
            }

            if (dir.mkdir()) {
                System.out.println("Directory created: " + dir.getName());
            } else {
                System.out.println("Directory already exists.");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
列出目录中的文件
import java.io.File;

public class FileExample {
    public static void main(String[] args) {
        File dir = new File("exampleDir");

        if (dir.exists() && dir.isDirectory()) {
            String[] files = dir.list();
            if (files != null) {
                for (String file : files) {
                    System.out.println(file);
                }
            }
        }
    }
}

字节操作

FileInputStream 和 FileOutputStream

FileInputStream 和 FileOutputStream 类用于读取和写入文件中的字节数据。

读取文件中的字节数据
import java.io.FileInputStream;
import java.io.IOException;

public class ByteStreamExample {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("example.txt")) {
            int data;
            while ((data = fis.read()) != -1) {
                System.out.print((char) data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
将字节数据写入文件
import java.io.FileOutputStream;
import java.io.IOException;

public class ByteStreamExample {
    public static void main(String[] args) {
        String data = "Hello, Byte Stream!";
        try (FileOutputStream fos = new FileOutputStream("example.txt")) {
            fos.write(data.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

字符操作

FileReader 和 FileWriter

FileReader 和 FileWriter 类用于读取和写入文件中的字符数据。

读取文件中的字符数据
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class CharacterStreamExample {
    public static void main(String[] args) {
        try (BufferedReader br = new BufferedReader(new FileReader("example.txt"))) {
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
将字符数据写入文件
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class CharacterStreamExample {
    public static void main(String[] args) {
        String data = "Hello, Character Stream!";
        try (BufferedWriter bw = new BufferedWriter(new FileWriter("example.txt"))) {
            bw.write(data);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

对象操作

ObjectInputStream 和 ObjectOutputStream

ObjectInputStream 和 ObjectOutputStream 类用于序列化和反序列化对象。

序列化对象
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class ObjectStreamExample {
    public static void main(String[] args) {
        Person person = new Person("John", 30);

        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"))) {
            oos.writeObject(person);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

class Person implements Serializable {
    private static final long serialVersionUID = 1L;
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + '}';
    }
}
反序列化对象
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

public class ObjectStreamExample {
    public static void main(String[] args) {
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"))) {
            Person person = (Person) ois.readObject();
            System.out.println(person);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

网络操作

Socket 和 ServerSocket

Socket 和 ServerSocket 类用于实现网络通信。

创建一个简单的服务器
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerExample {
    public static void main(String[] args) {
        try (ServerSocket serverSocket = new ServerSocket(8080)) {
            System.out.println("Server is listening on port 8080");
            while (true) {
                Socket socket = serverSocket.accept();
                OutputStream output = socket.getOutputStream();
                output.write("Hello, Client!".getBytes());
                socket.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
创建一个简单的客户端
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;

public class ClientExample {
    public static void main(String[] args) {
        try (Socket socket = new Socket("localhost", 8080)) {
            InputStream input = socket.getInputStream();
            int data;
            while ((data = input.read()) != -1) {
                System.out.print((char) data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

总结

在这篇博客文章中,我们全面介绍了 Java IO 中常见类的使用,包括磁盘操作、字节操作、字符操作、对象操作和网络操作。通过这些示例,您可以更好地理解和应用 Java IO,以便在实际项目中高效地处理各种输入和输出操作。希望这篇文章对您有所帮助,能够让您在 Java IO 的学习和使用中更加得心应手。

如果您有任何问题或建议,请在评论区留言。谢谢阅读!


希望这篇博客文章对您有帮助!如果您有任何问题或需要进一步的帮助,请随时告诉我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值