栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

io输入输出流

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

io输入输出流

Java中流的概念细分

• 按流的方向分类:
1. 输入流:数据流向是数据源到程序(以InputStream、Reader结尾的流)。
2. 输出流:数据流向是程序到目的地(以OutPutStream、Writer结尾的流)。

• 按处理的数据单元分类:
1. 字节流:以字节为单位获取数据,命名上以Stream结尾的流一般是字节流,如FileInputStream、FileOutputStream。
2. 字符流:以字符为单位获取数据,命名上以Reader/Writer结尾的流一般是字符流,如FileReader、FileWriter。
• 按处理对象不同分类:
1. 节点流:可以直接从数据源或目的地读写数据,如FileInputStream、FileReader、DataInputStream等。
2. 处理流:不直接连接到数据源或目的地,是”处理流的流”。通过对其他流的处理提高程序的性能,如BufferedInputStream、BufferedReader等。处理流也叫包装流。
节点流处于IO操作的第一线,所有操作必须通过它们进行;处理流可以对节点流进行包装,提高性能或提高程序的灵活性。

 文件专属:
java.io.FileInputStream(掌握)
java.io.FileOutputStream(掌握)
java.io.FileReader
java.io.FileWriter


转换流:(将字节流转换成字符流)
java.io.InputStreamReader
java.io.OutputStreamWriter


缓冲流专属:
java.io.BufferedReader
java.io.BufferedWriter
java.io.BufferedInputStream
java.io.BufferedOutputStream


数据流专属:
java.io.DataInputStream
java.io.DataOutputStream


标准输出流:
java.io.PrintWriter
java.io.PrintStream(掌握)


对象专属流:
java.io.ObjectInputStream(掌握)
java.io.ObjectOutputStream(掌握)


File文件类
java.io.File

简单写的读取文本

public class TestIo {
    public static void main(String[] args) {
        FileInputStream fileInputStream = null;
        try {
             fileInputStream = new FileInputStream("d:/a.txt");
             int s = 0;
            while ((s=fileInputStream.read())!=-1){
                if (s >= 128) {
                    // 第一位不是0代表多字节
                    int byteCnt = Integer.toBinaryString(s).indexOf("0");
                    System.out.println("byteCnt"+byteCnt);
                    byte[] bytes = new byte[byteCnt];
                    System.out.println("bytes"+bytes);
                    bytes[0] = (byte) s;
                    for (int i = 1; i < byteCnt; i++) {
                        bytes[i] = (byte) fileInputStream.read();
                    }
                    System.out.print(new String(bytes));
                } else {
                    System.out.print((char) s);
                }
             }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                fileInputStream.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}

 

io实现简单的交流

服务器端

public class ChatServer {
    public static void main(String[] args) {
        //需要一个地址端口号
        ServerSocket serverSocket = null;
        Socket accept=null;
        InputStream inputStream = null;
        ByteArrayOutputStream byteArrayOutputStream=null;
        try {
            //设置自己的端口
            serverSocket = new ServerSocket(9999);
            //等待客户连接过来
            //侦听socket连接 返回值为socket 这个就是连接过来的socket
            accept = serverSocket.accept();
            //读取客户端的消息
            inputStream = accept.getInputStream();
            //管道流 获取
            byteArrayOutputStream = new ByteArrayOutputStream();
            byte [] buffer = new byte[1024];
            int len;
            while((len=inputStream.read(buffer))!=-1){
                byteArrayOutputStream.write(buffer,0,len);
            }
            System.out.println(byteArrayOutputStream.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (byteArrayOutputStream!=null){
                try {
                    byteArrayOutputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (inputStream!=null){
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (accept!=null){
                try {
                    accept.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (serverSocket!=null){
                try {
                    serverSocket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }
    }
}

发送消息端

public class ChatUser {
    public static void main(String[] args) {

        //需要知道要连接的地址和端口
        InetAddress inetAddress = null;
        Socket socket=null;
        try {
            //设置接收方的ip
            inetAddress=InetAddress.getByName("127.0.0.1");
            //设置接收方的断口号
            int port = 9999;
            //通过端口号和ip创建连接
            socket = new Socket(inetAddress,port);
            //创建字节流 我理解为建立流
            OutputStream outputStream = socket.getOutputStream();
            outputStream.write("这里是李佳琪".getBytes());
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (socket!=null){
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947018.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号