Java I/O

这篇博客详细介绍了Java中的File对象创建及其在IO流中的应用。文章通过实例展示了FileInputStream、FileOutputStream、FileReader和FileWriter的使用,解释了字节流与字符流的区别,并提到了常用处理流如Buffered流和转换流的作用。此外,还讨论了输入输出流、节点流和处理流的基本概念。
摘要由CSDN通过智能技术生成

首先是File对象的创建:

package JavaCore;

import java.io.File;

public class TestFile {
    public static void main(String[] args) {
        //1、File(String directoryPath);
        File f1=new File("D:/TestFile/a.txt");
        //2、File(String directoryPath, String filename);
        File f2=new File("D:/TestFile","a.txt");
        //3、File(File dirObj, String filename);
        File file=new File("D:/TestFile");
        File f3=new File(file,"a.txt");
    }
}

Java I/O的结构图:

 字节流与字符流之间的区别:

1.读写单位不同:字节流式以字节(8位2进制)为单位,字符流是以字符为单位,根据码表映射字符,一次可能读多个字节。

2.处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。

3.字节流:一次读入或读出是8位二进制。

4.字符流:一次读入或读出是16位二进制。

 输入输出流:

输入流:InputStream、Reader

输出流:OutputStream、Writer

节点流:

  • 父 类 :InputStream 、OutputStream、 Reader、 Writer
  • 文 件 :FileInputStream 、 FileOutputStrean 、FileReader 、FileWriter 文件进行处理的节点流
  • 数 组 :ByteArrayInputStream、 ByteArrayOutputStream、 CharArrayReader 、CharArrayWriter 对数组进行处理的节点流(对应的不再是文件,而是内存中的一个数组)
  • 字符串 :StringReader、 StringWriter 对字符串进行处理的节点流
  • 管 道 :PipedInputStream 、PipedOutputStream 、PipedReader 、PipedWriter 对管道进行处理的节点流

 测试: 

 

I

package JavaCore;

import java.io.*;

public class TestFile {
    public static void main(String[] args) throws IOException {
        //为了代码层次清晰把所有异常全部抛出去
        File file=new File("D:/TestFile/a.txt");
        //测试FileInputStream及FileReader
        InputStream inputStream=new FileInputStream(file);
        byte[] buffer=new byte[1024];
        int len=1;
        while ((len=inputStream.read(buffer))!=-1){
            String str=new String(buffer,0,len);
            System.out.println(str);
        }
        inputStream.close();
        //你爱我,
        //我爱你,
        //蜜雪冰城甜蜜蜜。

        Reader reader=new FileReader(file);
        char[] chars=new char[1024];
        while ((len=reader.read(chars))!=-1){
            System.out.println(chars);
        }
        //你爱我,
        //我爱你,
        //蜜雪冰城甜蜜蜜。
        reader.close();

    }
}
package JavaCore;

import java.io.*;

public class TestFile {
    public static void main(String[] args) throws IOException {
        //为了代码层次清晰把所有异常全部抛出去
        File file=new File("D:/TestFile/a.txt");
        //测试OutInputStream及FileWriter
        OutputStream outputStream=new FileOutputStream(file);
        byte[] bytes=("  望岳\n" +
                "作者:杜甫\n" +
                "岱宗夫如何?齐鲁青未了。\n" +
                "造化钟神秀,阴阳割昏晓。\n" +
                "荡胸生曾云,决眦入归鸟。\n" +
                "会当凌绝顶,一览众山小。").getBytes();
        outputStream.write(bytes);
        outputStream.close();

        Writer writer=new FileWriter(file);
        String str="  卜算子·咏梅\n作者:毛泽东\n风雨送春归,飞雪迎春到。\n已是悬崖百丈冰,犹有花枝俏。\n俏也不争春,只把春来报。\n待到山花烂漫时,她在丛中笑。";
        writer.write(str);
        writer.close();
    }
}

 

 

常用的处理流:

  • 缓冲流:BufferedInputStrean 、BufferedOutputStream、 BufferedReader、 BufferedWriter 增加缓冲功能,避免频繁读写硬盘。
  • 转换流:InputStreamReader 、OutputStreamReader实现字节流和字符流之间的转换。
  • 数据流: DataInputStream 、DataOutputStream 等-提供将基础数据类型写入到文件中,或者读取出来。

处理流和节点流使用方法基本雷同这里不再赘述.

面试题:https://blog.csdn.net/weixin_42363141/article/details/114034877

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值