07|Java IO流与网络编程入门教程:通俗易懂,实例丰富

一、IO流概念与应用

  1. 什么是IO流?

想象一下水管流水,水从一端流入流出的过程就像是数据在程序中的传输。在Java世界里,IO流就是这样一个抽象概念,它是数据在不同存储介质或网络之间传输的一种方式。简单来说,如果你把数据看作水流,那么IO流就是承载这个水流的管道,它可以用来读取文件、网络数据,也可以用来写出数据到文件、网络中去。

// 创建一个字节流来读取文件
FileInputStream fis = new FileInputStream("test.txt");
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
    // 处理读取到的字节流
}
fis.close();

// 创建一个字节流来写出数据到文件
FileOutputStream fos = new FileOutputStream("output.txt");
fos.write("Hello, World!".getBytes());
fos.close();
  1. IO流分类

Java的IO流分为两大类:字节流和字符流。

• 字节流:处理原始的二进制数据,如InputStream和OutputStream及其子类,适用于读写图片、音频、视频等非文本文件。

• 字符流:基于字节流之上,加入了字符集转换,用于处理文本数据,如Reader和Writer及其子类,便于我们直接操作字符而非字节。

3.文件操作与文件夹遍历

Java提供了java.io.File类来进行文件和目录操作,例如:

File file = new File("/path/to/file");
if (file.exists()) {
    System.out.println("File name: " + file.getName());
    System.out.println("Absolute path: " + file.getAbsolutePath());
    System.out.println("Parent directory: " + file.getParent());
    System.out.println("File size in bytes: " + file.length());

    // 遍历文件夹及子文件夹下的所有文件
    if (file.isDirectory()) {
        File[] files = file.listFiles();
        for (File child : files) {
            // 对每个子文件/子目录进行操作
        }
    }
}

二、网络编程基础与Socket编程

1.网络编程简介

网络编程是指利用网络协议(如TCP/IP)在不同的计算机间建立连接并交换数据。Java的网络编程主要集中在java.net包下。

2.Socket编程实现

在Java中,Socket和ServerSocket类是网络通信的核心,它们分别用于客户端和服务端。

实例:简单的Socket通信

• 服务器端(监听客户端连接请求并发送响应):

import java.io.*;
import java.net.*;

public class Server {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8000); // 创建ServerSocket监听8000端口
        Socket socket = serverSocket.accept(); // 接受客户端连接请求

        // 获取Socket输出流向客户端发送数据
        OutputStream outToClient = socket.getOutputStream();
        PrintWriter out = new PrintWriter(outToClient, true);
        out.println("Hello from Server!");

        // 在完成通信后关闭资源
        socket.close();
        serverSocket.close();
    }
}

客户端(连接服务器并接收响应): 

import java.io.*;
import java.net.*;

public class Client {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("localhost", 8000); // 连接到本地服务器8000端口
        
        // 获取Socket输入流读取服务器发送的数据
        InputStream inFromServer = socket.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(inFromServer));
        String line = reader.readLine();
        System.out.println("Received from Server: " + line);

        // 完成通信后关闭资源
        reader.close();
        socket.close();
    }
}

总结

IO流和网络编程是Java开发中的核心技术之一。熟练掌握它们可以帮助你轻松应对文件操作、数据传输以及网络通信任务。在实际应用中,记得妥善处理异常,遵循良好的编程习惯,比如使用try-with-resources语句自动关闭流资源,确保程序的健壮性。

练习

1. 实践练习:创建一个Java程序,使用IO流读取一个文本文件,统计其中的单词数量,并将结果写入另一个文件。

2. 网络通信:扩展上面的Socket示例,实现一个简单的聊天程序,允许用户在客户端之间互相发送消息。

亲爱的读者,感谢您关注与支持我的博客。您的每一份鼓励都是我前行的动力。若我的文章曾给您带来收获或启发,欢迎打赏支持。打赏款项将用于提升内容质量,为您提供更优质的阅读体验。无论结果如何,都感恩您的陪伴,让我们共同在知识的世界里探索前行!

​​​​​​​

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周盛欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值