美文网首页
Java_IO流及IO流在网络编程中的应用

Java_IO流及IO流在网络编程中的应用

作者: kaikoo | 来源:发表于2022-09-02 19:15 被阅读0次

    IO流

    (抽象基类) 字节流 字符流
    输入流 InputStream Reader
    输出流 OutputStream Writer

    字节流:适合操作文件,如图片、声音、视频(按字节一个一个读取)
    字符流:适合操作文本(按字符读取)
    根据实现类的后缀可以看出属于字节流还是字符流,如FileInputStream和FileReader

    常用节点流
    操作文件:FileInputStream、FileOutputStream
    操作文件中的字符:FileReader、FileWriter(父类分别为InputStreamReader和OutputStreamWriter)
    (字符输出流需要使用flush()刷新)

    处理流(包装流)
    需要传入节点流,在节点流之上提供更强大的功能
    操作文件:BufferedInputStream、BufferedOutputStream
    操作文件中的字符:BufferedReader、BufferedWriter

    转换流
    把一种字节流转换为字符流 可以指定编码:
    常用:InputStreamReader、OutputStreamReader

    存在编码问题时:
    // 把字节流FileInputStream转换为字符流InputStreamReader
    InputStreamReader isr = new InputStreamReader (new FileInputStream(filePath),"gbk");
    // 按需要包装到处理流(包装流)BufferedReader中
    BufferedReader br = new BufferedReader (isr);
    
    在网络编程时:
    // 把字节流socket.getInputStream()转换为字符流InputStreamReader
    InputStreamReader isr = new InputStreamReader (socket.getInputStream());
    // 按需要包装到处理流(包装流)BufferedReader中
    BufferedReader br = new BufferedReader (isr);
    

    在网络编程中的应用

    socket连接:

    • 服务端


      服务端
    • 客户端


      客户端

    客户端发送(文本)信息给服务端:

    1. 字节流

    • 服务端


      服务端
    • 客户端


      客户端
    • 结果


      服务端结果

    2. 字符流

    • 服务端


      服务端
    • 客户端


      客户端
    • 结果


      服务端结果

    客户端从本地读取文件发送给服务端:

    • 工具方法


      image.png
    • 服务端


      服务端
    • 客户端


      客户端
    • 结果


      image.png
      image.png

    最后就是一定要记得关闭资源
    字节流使用socket.shutdownOut
    字符流记得使用newLine()作为结束标记 以及使用flush()刷新

    相关文章

      网友评论

          本文标题:Java_IO流及IO流在网络编程中的应用

          本文链接:https://www.haomeiwen.com/subject/tgcynrtx.html