java I/O(输入/输出)

输入流

InputStream类是字节输入流的抽象类,是所有字节输入流的父类  (处理字节)

Reader类是字符输入流的抽象类,所有字符输入流的实现都是它的子类 (处理文本)

输出流 

OutputStream类是字节输出流的抽象类,是所有字节输出流的父类  (处理字节)

Writer类是字符输出流的抽象类,所有字符输出流的实现都是它的子类 (处理文本)

总结几个常用数据流的用法

  • 文件流 

FileInputSteam  读取磁盘文件  相当于 new了一个磁盘文件

FileOutputSteam  输出文件 相当于把new好的文件 输出成磁盘文件

    try {
            //把磁盘文件写入FileInputStream
            FileInputStream fileinput = new FileInputStream("读取文件路径");//;
            FileOutputStream fileoutput = new FileOutputStream("写入文件路径");
            //读取fStream
            byte[] buffer = new byte[1024];
            int n=0;
            while ((n = fileinput.read(buffer)) != -1) {
                //buffer就是读取的内容
                //输出成磁盘文件
                fileoutput.write(buffer, 0, n);
                //ds.write(buffer, 0, length);
            }
            fileoutput.close();
            fileinput.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
  • 缓冲流 

BufferedInputStream BufferedOutputStream

缓冲流是对流的操作的功能的加强,提高了数据的读写效率

    try {
            //通过缓存数据流输出其它流
            BufferedInputStream in = new BufferedInputStream(new FileInputStream("读取流文件路径"), 1024);
            BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("输出流文件路径"), 1024);
            int b=0;
            //读写数据
            while ((b = in.read()) != -1) {
                out.write(b);
            }
            //刷新
            out.flush();
            in.close();
            out.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
  • 数据输入输出流

DataInputStream 和 DataOutputStream

这两个流可以读写与机器无关的java数据,比较适用于网络数据传输

    try {
            // Data Stream写到输入流中
            DataOutputStream dos = new DataOutputStream(new FileOutputStream("File.txt"));
            dos.writeBytes("File"); //按2字节写入,都是写入的低位
            dos.writeChars("File"); // 依照Unicode写入
            // 依照UTF-8写入(UTF8变长,开头2字节是由writeUTF函数写入的长度信息。方便readUTF函数读取)
            dos.writeUTF("File");
            dos.flush();
            dos.close();

            // Data Stream 读取
            DataInputStream dis = new DataInputStream(new FileInputStream("File.txt"));
            // 读取字节
            byte[] b = new byte[2];
            dis.read(b);
            System.out.println(new String(b, 0, 2));
            // 读取字符
            char[] c = new char[2];
            for (int i = 0; i < 2; i++) {
                c[i] = dis.readChar();
            }
            System.out.println(new String(c, 0, 2));
            // 读取UTF
            System.out.println(dis.readUTF());
            dis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
  • 字节流

InputStreamReader 和 OutputStreamWriter

字节流读取二进制文件,字符流读取文本文件 可以定义编码格式。 

   try {
            
            StringBuffer inBld = new StringBuffer();
            InputStreamReader reader = new InputStreamReader(new FileInputStream("读取文件路径"),  "UTF-8");
            
            int length = 1024;
            char buffer[] = new char[length];
            int count;
            while ((count = reader.read(buffer, 0, length - 1)) > 0) {
                inBld.append(buffer, 0, count);
            }
            
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("写入文件路径"), "UTF-8"));
            writer.write(inBld.toString());
            writer.flush();

            writer.close();
            reader.close();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值