小工具知识网

当前位置: 首页 > 行业知识 > 【JavaEE 初阶(五)】文件操作和IO

行业知识

【JavaEE 初阶(五)】文件操作和IO

2026-10-25 21:44:17 来源:互联网转载

❣博主主页: 33的博客❣

▶️文章专栏分类:JavaEE◀️

我的代码仓库: 33的代码仓库

关注我带你了解更多文件操作

目录

  • 1.前言
  • 2.认识文件
  • 3.文件操作
    • 3.1File 属性
    • 3.2构造方法
    • 3.3File类方法
    • 4.文件内容操作
      • 4.1Reader
      • 4.2writer
      • 4.3inputStream
      • 4.4OutputStream
      • 4.5字符流与字节流转换
      • 5.应用
      • 6.总结

        1.前言

        2.认识文件

        操作系统中,会把硬盘设备和软件资源抽象为文件,但大多数情况下谈到文件就是指硬盘中的文件。

        文件是以树型结构组织的:以此电脑为根节点的n叉树

        文件路径:

        如何在文件系统中描述一个文件的位置,因为从树型结构的角度来看,树中的每个结点都可以被一条从根开始,一直到达的结点的路径所描述,而这种描述方式就被称为文件的绝对路径(absolute path)。

        除了使用绝路径来描述以外,还可以用相对路径来表示一个文件的位置

        . 表示当前目录

        . . 表示当前目录的上一级目录

        文件类型:

        二进制文件:文件是以二进制形式存储数据,不要求保存的内容是合法的字符

        文本文件:文件是以纯文本形式存储数据,保存的内容都是合法的字符

        判断一个文件是哪种类型,最简单的方式就是以文本的方式打开一个文件,观察是否出现乱码,如果乱码就是二进制文件否则为文本文件。

        例如我打开一个图片:

        3.文件操作

        我们主要涉及文件的元信息、路径的操作,暂时不涉及关于文件中内容的读写操作。

        Java 中通过 java.io.File 类来对一个文件(包括目录)进行抽象的描述。注意,有 File 对象,并不代表真实存在该文件。

        3.1File 属性

        路径中用来分割的符号,在Windows中’/‘或者’’

        3.2构造方法

        3.3File类方法

        public static void main(String[] args) {        File file=new File("d:/test");        System.out.println(file.getName());//获取父目录纯文件名称        System.out.println(file.getParent());//获取父目录路径        System.out.println(file.getPath());//获取file的路径        System.out.println(file.getAbsolutePath());//获取file的绝对路径    }
        public static void main(String[] args) throws IOException {        File file=new File("d:/test/test.txt");        System.out.println(file.exists());//判断file是否存在        System.out.println(file.isDirectory());//判断file是否为目录        System.out.println(file.isFile());//判断file是否为文件        System.out.println("创建是否成功: "+file.createNewFile());//创建file对象        System.out.println("删除是否成功: "+file.delete());//删除file    }
        public static void main(String[] args) {        File file=new File("d:/test");        String[] files=file.list();        for (int i=0;i            System.out.println(files[i]);        }    }        File file=new File("d:/test/DDD/ddd");        //file.mkdir();//创建一个目录        file.mkdirs();//可以创建中间目录    }        //打开一个文件        Reader reader=new FileReader("d:/test/test.txt");        while (true){            //一次read读取一个字符,返回当前字符的编码            //int n=reader.read();            //一次读取多个字符,返回读取的字符数            char[] cbuf=new char[3];            int n=reader.read(cbuf);            //n=-1表示读取完毕            if(n==-1){                break;            }            System.out.println(n);            System.out.print(Arrays.toString(cbuf));            System.out.println();        }        //一个文件写完需要加close要记得,关闭资源        reader.close();    }        //打开一个文件        Reader reader=new FileReader("d:/test/test.txt");        try {            while (true){                //一次read读取一个字符,返回当前字符的编码                //int n=reader.read();                //一次读取多个字符,返回读取的字符数                char[] cbuf=new char[3];                int n=reader.read(cbuf);                if(n==-1){                    break;                }                System.out.println(n);                System.out.print(Arrays.toString(cbuf));                System.out.println();            }        }finally {            //一个文件写完需要加close要记得            reader.close();        }    }        //打开一个文件        try (Reader reader=new FileReader("d:/test/test.txt")) {            while (true) {                //一次read读取一个字符,返回当前字符的编码                //int n=reader.read();                //一次读取多个字符,返回读取的字符数                char[] cbuf = new char[3];                int n = reader.read(cbuf);                if (n == -1) {                    break;                }                System.out.println(n);                System.out.print(Arrays.toString(cbuf));                System.out.println();            }        }     }        try (Writer writer=new FileWriter("d:/test/test.txt",true)){                        //直接写会覆盖之前的内容,但加上append就不会覆盖            writer.write("我在学习IO");        }    }        try (InputStream inputStream=new FileInputStream("d:/test/AAA/test.txt")){            while (true){                byte[] bytes=new byte[1024];                int n=inputStream.read(bytes);                for (int i=0;i                    System.out.println(bytes[i]);                }                if(n==-1)break;            }//字节流转换为字符流            Scanner scanner=new Scanner(inputStream);            String s=scanner.next();            System.out.println(s);        } catch (IOException e) {            e.printStackTrace();        }    }        try (OutputStream outputStream = new FileOutputStream("d:/test/AAA/test.txt",true)) {            String s="你好世界";            outputStream.write(s.getBytes());            outputStream.write(97);        } catch (IOException e) {            e.printStackTrace();        }    }        try (InputStream inputStream=new FileInputStream("d:/test/AAA/test.txt")) {            Scanner scanner=new Scanner(inputStream);            String s=scanner.nextLine();            System.out.println(s);        } catch (IOException e) {            e.printStackTrace();        }    }        try(OutputStream outputStream=new FileOutputStream("d:/test/AAA/test.txt")) {            PrintWriter writer=new PrintWriter(outputStream);//先写入缓冲区            writer.write("hello word");            writer.flush();//记得要冲刷一下        } catch (IOException e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        Scanner scanner=new Scanner(System.in);        System.out.println("请输入路径");        String path=scanner.nextLine();        File file=new File(path);        if (!file.isDirectory()){            System.out.println("输入有误");            return;        }        System.out.println("请输入文件名");        String words=scanner.nextLine();        find(file,words);    }    private static void find(File file,String words) {        File[] files= file.listFiles();        if (files==null){            return;        }        for (File f:files){            System.out.println("当前正在扫描"+f.getAbsolutePath());            if(f.isFile()){                check(f,words);            }else {                find(f,words);            }        }    }    private static void check(File file, String words) {        if (file.getName().contains(words)){            System.out.println("确认是否要删除文件(y/n)"+file.getAbsolutePath());            Scanner scanner=new Scanner(System.in);            String x=scanner.nextLine();            if (x.equals("y")){                file.delete();                System.out.println("删除成功");            }else {                return;            }        }else {            return;        }    }}

上一篇:服务器散热器家用怎么样?

下一篇:手机远程访问接家里局域网的主机怎么设置