java中的Io(input与output)操作总结(三)

标题:Java中的IO(Input与Output)操作总结(三)

概述

在Java中,IO是一项重要的操作。在前两篇文章中,我们讲解了Java中的Input与Output操作。本文将为大家介绍Java中的文件操作、Socket网络编程以及序列化操作。

文件操作

Java中,我们通过File类实现文件操作。首先,我们需要使用构造函数创建一个File对象,进而对文件进行操作。比如,我们要读取文件的内容,可以使用FileInputStream类读取文件输入流。具体的实现代码如下所示:

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

int content;
while ((content = fis.read()) != -1) {
    System.out.print((char) content);
}

fis.close();

上述示例中,首先创建了一个File对象file,指向了想要读取的文件example.txt。接着,使用FileInputStream类创建文件输入流fis,并且使用fis.read()方法逐个读取文件内容,在读取的时候如果返回值为-1,则说明文件已经读取结束,此时需要关闭流。

同样的,在Java中,我们也可以通过FileOutputStream类向文件中写入内容。以下是一个示例代码:

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

String content = "hello world";
byte[] bytes = content.getBytes();
fos.write(bytes);

fos.close();

上述示例中,同样创建了一个File对象file,指向了想要写入内容的文件example.txt。然后使用FileOutputStream类创建文件输出流fos,使用fos.write(bytes)方法向文件中写入字节数组bytes。

当然,这只是文件操作的冰山一角,我们还可以进行文件的重命名、删除、创建、获取文件名、获取文件大小等操作。若要了解更多内容,可以查阅File类的官方文档。

Socket网络编程

Java中的Socket网络编程是一项重要的技术,它允许不同的程序在不同的机器之间进行通信。在Java中,我们可以使用同步的阻塞方式或者异步的非阻塞方式在Socket编程中进行数据传输。

以下是一个简单的Socket编程示例,用于在服务器端监听请求,并返回响应:

Server端代码:

ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("Starting server...");

while (true) {
    Socket client = serverSocket.accept();
    System.out.println("Client connected...");

    OutputStreamWriter os = new OutputStreamWriter(client.getOutputStream());
    BufferedWriter out = new BufferedWriter(os);

    out.write("Hello client! \n");
    out.flush();

    client.close();
}

Client端代码:

Socket client = new Socket("localhost", 8888);
System.out.println("Client started...");

InputStreamReader isr = new InputStreamReader(client.getInputStream());
BufferedReader in = new BufferedReader(isr);

String response = in.readLine();
System.out.println(response);

client.close();

上述示例中,Server端使用ServerSocket类创建服务端Socket,监听指定8080端口的请求,一旦有客户端连接,则向客户端发送信息。Client端使用Socket类连接到指定端口,接收服务端的响应信息。

当然,Socket的使用还可以进行数据类型的传输、文件的传输、线程的并发编程等高级操作,如果有兴趣可以查看Java网络编程相关的文档。

序列化操作

Java中,我们可以使用序列化技术将一个Java对象转换成字节,也可以通过反序列化技术将一个字节流转换成Java对象。以下是一个简单的序列化示例:

public class Dog implements Serializable {
    private static final long serialVersionUID = -7049957702495547767L;

    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

Dog dog = new Dog("Tom", 3);
FileOutputStream fos = new FileOutputStream("dog.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);

oos.writeObject(dog);
oos.flush();

oos.close();

FileInputStream fis = new FileInputStream("dog.txt");
ObjectInputStream ois = new ObjectInputStream(fis);

Dog dog1 = (Dog) ois.readObject();
System.out.println(dog1.getName() + " " + dog1.getAge());

ois.close();

上述示例中,我们创建了一个Dog类,并实现了Serializable接口。然后,创建一个Dog对象dog,并使用ObjectOutputStream将其序列化写入文件dog.txt中。接着,使用ObjectInputStream从文件中读取dog对象,并反序列化成新的Dog对象dog1。

在Java中,序列化操作还可以进行规则的控制、子类的序列化、序列化ID的控制等操作,具体的内容可以查看Java序列化相关的文档。

3个部分分别介绍了Java中的文件操作、Socket网络编程以及序列化操作。当然,上述示例只是简单的示范。想要进行更为复杂的操作,还需要更深入的了解Java中的IO操作,如果有兴趣可以继续深入学习。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java中的Io(input与output)操作总结(三) - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • html css将表头固定的最直接的方法

    要将表头固定,最直接的方法是使用CSS中的position属性和z-index属性。具体步骤如下: HTML结构 首先,我们需要在HTML结构中将表格分为两部分:表头和表体。表头使用 标签,表体使用 标签。代码示例如下: <table> <thead> <tr> <th>姓名</th> <th…

    Java 2023年6月15日
    00
  • MyBatis的动态SQL语句实现

    “MyBatis的动态SQL语句实现”是一种非常实用的技术,它可以根据不同的条件自动生成不同的SQL语句,从而提高效率。下面是一份完整的攻略,包括了各种实现方法和示例。 前置知识 在学习动态SQL之前,你需要了解以下几点: SQL基础知识:你需要掌握SQL语句的基本语法和一些常用的操作符。 MyBatis框架:你需要了解MyBatis的基本使用方法和配置方式…

    Java 2023年5月20日
    00
  • java基础的详细了解第一天

    Java基础的详细了解第一天 学习目标 了解Java语言的历史以及Java程序的运行过程 熟悉Java语言的基本语法和数据类型 掌握Java中的运算符,流程控制语句和数组 学会使用Java提供的标准输入输出和字符串操作方法 学习过程 Java语言的概述 Java是一门跨平台的计算机编程语言,它的应用范围广泛,可以用于Web应用、移动应用、桌面应用等。Java…

    Java 2023年5月19日
    00
  • Java中的反射是什么?

    Java中的反射是指在运行时获取一个类的信息,并能够操作该类的成员变量、方法和构造方法。这种能力被称为“反射”。反射机制使Java程序可以在运行时动态加载、检查和使用类的相关信息,而不需要在编译时确定类名和方法名。 反射的作用 反射的作用主要有以下四个方面: 动态加载类,可以在运行时通过类名来获取对应的Class对象,从而实现动态加载类的效果。 动态获取类的…

    Java 2023年4月27日
    00
  • Tomcat 7-dbcp配置数据库连接池详解

    Tomcat 7-dbcp配置数据库连接池详解 数据库连接池是web应用常用的技术之一,可以有效的提高系统的效率和响应速度,同时利用连接池缓存连接这一特点,也可以避免频繁的连接请求导致数据库压力过大。本文主要介绍如何使用Tomcat 7-dbcp来配置一个数据库连接池。 1. 下载Tomcat-dbcp包 首先需要下载Tomcat-dbcp这个包,可以去官方…

    Java 2023年5月19日
    00
  • Java后台与微信小程序的数据交互实现

    针对“Java后台与微信小程序的数据交互实现”的问题,我们需要采取以下步骤: 1.编写Java后台 Java后台需要使用Spring Boot框架及Spring Data JPA作为数据持久层框架。 1.1.实现数据模型 首先,我们需要根据需求在Java后台中实现相关的数据模型,比如我们需要创建一个用户模型,代码如下: @Entity @Table(name…

    Java 2023年5月30日
    00
  • Java堆排序算法详解

    Java堆排序算法详解 Java堆排序(Heap Sort)算法是一种高效的排序算法,其时间复杂度为 $O(nlogn)$。该算法使用了最大堆或最小堆来进行排序,具有不占用额外空间、稳定性好等特点。下面我们将详细介绍Java堆排序算法的完整攻略。 1. 堆定义与性质 在Java堆排序算法中,使用的堆是一种完全二叉树,并且堆中的每个节点都大于等于(最大堆)或小…

    Java 2023年5月19日
    00
  • Java实现输入流转化为String

    为将输入流转化为字符串,我们需要使用Java IO包中的InputStreamReader类和BufferedReader类。以下是我们可以采取的步骤: 步骤一:打开输入流 在我们开始转化输入流,首先需要使用文件,网络或其他读取流操作创建InputStream对象。 InputStream input = // your input stream 步骤二:使…

    Java 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部