Java中的输入输出流代码示例详解

Java中的输入输出流可以用于读写各种类型的数据,可以用于很多场景,如文件读写、网络通信、图像处理等。以下是一些常见的使用场景和对应的输入输出流用法:

文件读写:使用FileInputStream/FileOutputStream或FileReader/FileWriter等类对文件进行读写。比如读取文件内容、写入文件内容、复制文件等。

  1. 文件读取
try {
    File file = new File("test.txt");
    FileInputStream fis = new FileInputStream(file);    
    int content;
    while ((content = fis.read()) != -1) {
        System.out.print((char) content);
    }
    fis.close();
} catch (IOException e) {
    e.printStackTrace();
}

        2.文件写入

try {
    File file = new File("test.txt");
    FileOutputStream fos = new FileOutputStream(file);
    String content = "Hello, Input/Output Stream!\n";
    fos.write(content.getBytes());
    fos.close();
} catch (IOException e) {
    e.printStackTrace();
}

网络通信:使用Socket类创建网络通信客户端或服务端,使用InputStream/OutputStream或Reader/Writer等类进行数据的读写。比如发送和接收数据、构建客户端和服务器等。

        3.网络通信(服务端)

try {
    ServerSocket serverSocket = new ServerSocket(12345);
    Socket socket = serverSocket.accept();
    InputStream is = socket.getInputStream();
    byte[] buffer = new byte[1024];
    int len;
    StringBuilder sb = new StringBuilder();
    while ((len = is.read(buffer)) != -1) {
        sb.append(new String(buffer, 0, len));
    }
    System.out.println("Received message: " + sb.toString());
    is.close();
    socket.close();
    serverSocket.close();
} catch (IOException e) {
    e.printStackTrace();
}

        4.网络通信(客户端)

try {
    Socket socket = new Socket("localhost", 12345);
    OutputStream os = socket.getOutputStream();
    String message = "Hello, network communication!";
    os.write(message.getBytes());
    os.close();
    socket.close();
} catch (IOException e) {
    e.printStackTrace();
}

数据解析:使用InputStream/Reader等类读取数据流,使用各种解析器(如XML解析器、JSON解析器)进行解析。比如解析XML、JSON等数据格式。

        5.数据解析(XML)

try {
    File file = new File("test.xml");
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document doc = db.parse(file);
    NodeList nodeList = doc.getElementsByTagName("book");
    for (int i = 0; i < nodeList.getLength(); i++) {
        Node node = nodeList.item(i);
        if (node.getNodeType() == Node.ELEMENT_NODE) {
            Element element = (Element) node;
            String id = element.getAttribute("id");
            String title = element.getElementsByTagName("title").item(0).getTextContent();
            String author = element.getElementsByTagName("author").item(0).getTextContent();
            System.out.println("Book " + id + ": " + title + " by " + author);
        }
    }
} catch (Exception e) {
    e.printStackTrace();
}

图像处理:使用InputStream/OutputStream等类读取和写入图片,使用ImageIO类等进行图像处理。比如读取图片、裁剪图片、旋转图片等。

        6.图像处理

try {
    BufferedImage image = ImageIO.read(new File("test.jpg"));
    int width = image.getWidth();
    int height = image.getHeight();
    BufferedImage rotatedImage = new BufferedImage(height, width, image.getType());
    Graphics2D g = rotatedImage.createGraphics();
    g.rotate(Math.toRadians(90), height / 2.0, height / 2.0);
    g.drawImage(image, 0, 0, null);
    ImageIO.write(rotatedImage, "jpg", new File("rotated.jpg"));
    g.dispose();
} catch (IOException e) {
    e.printStackTrace();
}

总之,Java中的输入输出流提供了一种通用的机制来操作不同类型的数据,使用时需要了解不同的输入输出流类和方法的特点和用法,以便在各种场景下实现对数据的有效操作。

你可能感兴趣的:(java,开发语言)