0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

复习笔记7-Java高级 IO流

Posted at

1.Junit单元测试框架(测试方法)

①为需要测试的业务类,定义对应的测试类,并为每个业务方法,编写对应的测试方法(必须:公共 无参 无返回值)

②测试方法上必须声明@Test注解,然后在测试方法中,编写代码调用被测试的业务方法进行测试

③如果测试通过是绿色,测试失败是红色

image.png

2.Junit框架的常见注解

image.png

3.注解

作用:让其他程序根据注解信息来决定怎么执行该程序
注意:注解可以用在类上,构造器上,方法上,成员变量上,参数上,等位置处

4.File

①创建对象

File对象既可以代表文件,也可以代表文件夹
File封装的对象仅仅是一个路径名,这个路径可以是存在的,也允许是不存在的

②方法:判断文件类型,获取文件信息

image.png

        // 1.创建文件对象,指代某个文件
        File f1 = new File("C:\\Users\\liang\\OneDrive\\デスクトップ\\新建 文本文档.txt");

        // 2.判断当前文件对象,对应的文件路径是否存在,存在返回true
        System.out.println(f1.exists());// true

        // 3.判断当前文件对象指代的是否是文件,是文件返回true,反之
        System.out.println(f1.isFile()); // true

        // 4.判断当前文件对象指代的是否是文件夹,是文件夹返回true,反之
        System.out.println(f1.isDirectory());// false

        // 5.获取文件的名称 包含后缀
        System.out.println(f1.getName());// 新建 文本文档.txt

        // 6.获取文件的大小,返回字节个数
        System.out.println(f1.length());// 540

        // 7.获取文件的最后修改时间
        System.out.println(f1.lastModified());// 1722664222184

        // 8.获取创建文件对象时,使用的路径
        File f2 = new File("file-io-app\\src\\itheima.txt");
        System.out.println(f2.getPath());// file-io-app\src\itheima.txt

        // 9.获取绝对路径
        File f3 = new File("file-io-app\\src\\itheima.txt");
        System.out.println(f3.getAbsolutePath());// C:\java-learning\java-note\file-io-app\src\itheima.txt

③方法:创建文件,删除文件

image.png

        // 1.创建一个新文件(文件内容为空),创建成功返回true,反之
        File f1 = new File("C:/resource/itheima2.txt");
        System.out.println(f1.createNewFile());

        // 2.用于创建文件夹,注意,只能创建一级文件夹
        File f2 = new File("C:/resource/aaa");
        System.out.println(f2.mkdir());

        // 3.用于创建文件夹,注意,可以创建多级文件夹
        File f3 = new File("C:/resource/bbb/ccc/ddd");
        System.out.println(f3.mkdirs());

        // 4.删除文件或者空文件,注意,不能删除非空文件
        System.out.println(f1.delete());
        System.out.println(f2.delete());

④方法:遍历文件夹

image.png

        // 1.获取当前目录下所有的“一级文件名称”到一个字符串数组中去返回
        File f1 = new File("C:\\code");
        String[] names = f1.list();
        for (String name : names) {
            System.out.println(name);
            // javasepro
            //得奖的是
            //汪苏泷
            //雨天
        }

        // 2.重点:获取当前目录下所有的“一级文件对象”到一个文件对象数组中去返回
        File[] files = f1.listFiles();
        for (File file : files) {
            System.out.println(file.getAbsolutePath());
            // C:\code\javasepro
            //C:\code\得奖的是
            //C:\code\汪苏泷
            //C:\code\雨天

5.输入流(input):负责把数据读到程序中去

⭐方法:read

①字节输入流(FileInputStream)

        // 1.创建文件字节输入流管道,与源文件接通
        InputStream is = new FileInputStream(("file-io-app\\src\\itheima02.txt"));

        // 2.开始读取文件中的字节数据,每次读取多个字节
        // 每次读取多个字节到字节数组中去,返回读取的字节数量,读取完毕会返回-1
        byte[] buffer = new byte[3];
        int len;// 记住每次读取了多少个字节
        while ((len = is.read(buffer)) != -1){
            // 注意:读取多少 倒出多少
            String rs = new String(buffer,0,len);
            System.out.print(rs);// abc66
        }

        is.close();// 关闭流 

②字符输入流(FileReader)

        try(
            // 1.创建一个文件字符输入流管道与源文件接通
             Reader fr = new FileReader("io-app2\\src\\itheima01.txt");
                ) {

            // 2.每次读取多个字符
            char[] buffer = new char[3];
            int len;// 记住每次读取了多少个字符
            while ((len = fr.read(buffer)) != -1){
                // 读取多少 倒出多少
                System.out.print(new String(buffer, 0, len));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

6.输出流(output):负责写数据出去

⭐方法:write

①字节输出流(FileOutputStream)

        // 1.创建文件字节输入流管道,与源文件接通
        OutputStream os =
                new FileOutputStream("file-io-app\\src\\itheima04out.txt",true);
        // 2.开始写字节数据出去了
       os.write(97);// 97就是一个字节 代表a
       os.write('b');// 'b'也是一个字节

        // getBytes方法将字符串 "我爱你中国abc" 转为字节数组
        byte[] bytes = "我爱你中国abc".getBytes();
        os.write(bytes);

        // 将字节数组的前 15 个字节写入文件
        os.write(bytes,0,15);

        // 换行符
       os.write("\r\n".getBytes());

       os.close();// 关闭流

②字符输出流(FileWriter)

        try(
            //0.创建一个文件字符输出流管道与源文件接通
            Writer fw = new FileWriter("io-app2\\src\\itheima02out.txt",true);
                ) {
            // 1.写一个字符出去
            fw.write('a');
            fw.write(97);
            fw.write('磊');// 写一个字符出去
            fw.write("\r\n");// 换行

            // 2.写一个字符串出去
            fw.write("我爱你中国abc");

            // 3.写字符串的一部分出去
            fw.write("我爱你中国abc",0,5);

            // 4.写一个字符数组出去
            char[] buffer = {'黑','马','a','b','c'};
            fw.write(buffer);

            // 5.写字符数组的一部分出去
            fw.write(buffer,0,2);

        } catch (Exception e) {
            e.printStackTrace();
        }

7.缓冲流

对原始流进行包装,以提高原始流读写数据的性能

①.字节缓冲输入流/输出流(BufferedInputStream/BufferedOutputStream)

image.png

②.字符缓冲输入流(BufferedReader)

⭐按照行读取字符:readLine,读取一行数据返回,如果没有数据可读了,会返回null
image.png

③.字符缓冲输出流(BufferedWriter)

⭐换行:newLine
image.png

8.释放资源的方式

①try-catch-finally

image.png

②try-with-resource

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?