java IO流经典面试题(含代码)

File类和IO类题目:

以下所有题目代码均是在main方法里调用实现:

   public static void main(String[] args) throws IOException {
//        work1();
//        work2();
//        work3();
//        work4();
//        work6();
//        work5();
//        work7();
//        work9();
//        work10();
//        work11();
//        work12();
}
  1. 在指定的路径下新建一个 .txt 文件 “test.txt”,利用程序在文件中写入如下内容:

“Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于 1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有 卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科 学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互 联网的产业环境下,Java更具备了显著优势和广阔前景。”

 private static void work1() throws IOException {
        /**要求:
        //创建文件
        File file = new File("test.txt");
        file.createNewFile();
        //写入数据
        FileWriter fwriter = new FileWriter(file);
        fwriter.write("Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言.....");
        fwriter.close();
    }

2.利用程序读取 test.txt 文件的内容, 并在控制台打印

 private static void work2() throws IOException {
        /**
         * 2.利用程序读取 test.txt 文件的内容, 并在控制台打印
         */
        FileReader reader = new FileReader("test.txt");
        //采用数组来缓冲
        char[] c =new char[100];
        int len ;
        while ((len=reader.read(c))!=-1){
            //遍历数组
            for (int i=0;i<len;i++) {
                System.out.print(c[i]);
            }
        }

3.利用程序复制 test.txt 为 test1.txt

 private static void work3() throws IOException {
         /*
        3.利用程序复制 test.txt 为 test1.txt
        因为文件类型是文本文档,所以选择字符流
         */
        File file = new File("test.txt");
        FileReader fr = new FileReader(file);
        FileWriter fw = new FileWriter("test1.txt");
        int len;
        char[] chars = new char[10];
        while((len = fr.read(chars)) != -1){
            fw.write(chars, 0, len);
        }
        fr.close();
        fw.close();

    }

4.列出当前目录下全部java文件的名称

 private static void work4() {
        /**
         * 4.列出当前目录下全部java文件的名称
         * 考点:
         *    1.File的list/listFile方法
         *    2.过滤器FilenameFilter/Filefilter
         */
        File file = new File("D:\\AAtemp");
        String[] filenames = file.list(new FilenameFilter() {
            @Override
            //accept会对文件夹的每一个子文件夹进行检测
            public boolean accept(File dir, String name) {
                return name.endsWith(".java");
            }
        });
        for (String f :filenames)
            System.out.println(f);
    }

5.列出workspace目录下.class的名字及其大小,并删除其中的一个?

 private static void work5() {
        //列出workspace目录下.class的名字及其大小,并删除其中的一个?
        File file = new File("C:\\Test");
        File file2 = new File("C:\\Test\\WiFi_Log.txt");
        File[] file1 = file.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith(".txt");
            }
        });
        file2.delete();
        for (File l : file1) {
            System.out.println(l);
        }
    }

6.使用File类下的常用方法获取某些文件的信息

 private static void work6() {
        /**
         * 6.使用File类下的常用方法获取某些文件的信息
         * 常用方法:getName;getAbsolutePath,getPath.lenth.isFile,isDirectory
         */
        File file = new File("test.txt");
        file.getAbsolutePath();

    }
  1. 操作D盘下的my.txt文件
  1. 判断my.txt文件是否存在

  2. 若存在则删除;若不存在则创建

private static void work7() {
        /**
         * 7. 操作D盘下的my.txt文件
         *      1) 判断my.txt文件是否存在
         *      2) 若存在则删除;若不存在则创建
         *      考点:boolean exist(),delete(),mkdir()
         */
        File file = new File("D:\\AAAA");
        if(file.exists()){
            file.delete();
        }else {
            file.mkdir();
        }
    }
  1. 使用File类删除某个文件夹(例如D盘下的temp文件夹)下的所有文件和文件夹:

1) 判断temp文件夹下的文件类型,如果是文件则直接删除

2) 如果是文件夹则获取该文件夹下的子文件和文件夹

3) 使用递归的方式删除所有temp文件夹下的文件和文件夹

    private static void work9() {
        /*
        9. 使用File类删除某个文件夹(例如D盘下的temp文件夹)下的所有文件和文件夹:
             1) 判断temp文件夹下的文件类型,如果是文件则直接删除
             2) 如果是文件夹则获取该文件夹下的子文件和文件夹
            3) 使用递归的方式删除所有temp文件夹下的文件和文件夹
         */
        File file9 = new File("C:\\Test");
        myDelete(file9);
    }

    private static void myDelete(File file9) {
        if (file9.isFile()){
            file9.delete();
        }else{
            File[] f9 = file9.listFiles();
            for (File f:f9){
                myDelete(f);
            }
            file9.delete();
        }
    }

10.利用IO操作文件

1)利用代码在D盘下创建news文件夹。

2)利用代码在news文件夹下创建2个.docx文件,2个.java文件,2个.txt的文件(在控制台打印news文件夹下的.java文件

 private static void work10() {
        /**
         * 利用IO操作文件
         * 1)利用代码在D盘下创建news文件夹。
         * 2)利用代码在news文件夹下创建2个.docx文件,2个.java文件
         * 2个.txt的文件(在控制台打印news文件夹下的.java文件
         */
        try {
            File file1 = new File("D:\\ATest\\test1.docx");
            File file2 = new File("D:\\ATest\\test2.docx");
            File file3 = new File("D:\\ATest\\test1.java");
            File file4 = new File("D:\\ATest\\test2.java");

            if(!file1.getParentFile().exists()){
                file1.getParentFile().mkdirs();
                System.out.println("文件夹创建成功!");
            }

            if(!file1.exists()){
                file1.createNewFile();
                System.out.println("文件1创建成功!");
            }
            if(!file2.exists()){
                file2.createNewFile();
                System.out.println("文件2创建成功!");
            }  if(!file3.exists()){
                file3.createNewFile();
                System.out.println("文件3创建成功!");
            }
            if(!file4.exists()){
                file4.createNewFile();
                System.out.println("文件4创建成功!");
            }

        } catch (IOException e) {
            // TODO
            e.printStackTrace();

        }

        //遍历文件夹
//        File file10 = new File("D:\\Test");
//        myFilelist(file10);
    }
  1. 利用IO流操作文件

1)利用Java代码创建D:\temp\temp1\temp2共3个文件夹2)在temp文件夹下创建一个1.txt文件内容为hello,创建一个Hello.java文件

3)内容为public static void main(String[] args){},在temp1文件夹下创建同样的两个文件

4)输出temp文件夹下包括其子文件夹下,所有的.java文件

 private static void work11() throws IOException {
        File file1 = new File("D:\\AAtemp\\temp1\\temp2");
        File file2 = new File("D:\\AAtemp\\1.txt");
        File file3 = new File("D:\\AAtemp\\hello.java");
        File file4 = new File("D:\\AAtemp\\temp1\\1.txt");
        File file5 = new File("D:\\AAtemp\\temp1\\hello.java");
        //创建文件夹及文件
        try {
            if(!file1.getParentFile().exists()) {
                file1.getParentFile().mkdirs();
                System.out.println("D:\\AAtemp\\temp1\\temp2!");
            }
            if(!file2.getParentFile().exists()){
                file2.getParentFile().mkdirs();
                System.out.println("D:\\AAtemp");
            }
            if(!file2.exists()){
                file2.createNewFile();
                System.out.println("D:\\AAtemp\\1.txt创建成功!");
            }
            if(!file3.exists()){
                file3.createNewFile();
                System.out.println("D:\\AAtemp\\hello.java创建成功!");
            }
            if(!file4.exists()){
                file4.createNewFile();
                System.out.println("D:\\AAtemp\\temp1\\1.txt!");
            }
            if(!file5.exists()){
                file5.createNewFile();
                System.out.println("D:\\AAtemp\\temp1\\hello.java创建成功!");
            }
        } catch (IOException e) {
            // TODO
            e.printStackTrace();

        }
        //添加file2数据进文件
        String str= "Hello今夜夜晚依旧美丽!";
        char[] chars = str.toCharArray();
        //字符流写入数据
        FileWriter writer = new FileWriter(file2);
        writer.write(chars);
        System.out.println("file2数据进文件了");
        writer.close();
        //添加file3数据进文件
        String str1= "public static void main(String[] args){}";
        char[] chars1 = str1.toCharArray();
        //字符流写入数据
        FileWriter writer1 = new FileWriter(file3);
        writer1.write(chars);
        System.out.println("file3数据进文件了");
        writer.close();
    }
  1. 利用IO流操作文件
  1. 利用java代码在D盘下创建一个mytemp文件夹

  2. 显示D盘下所有的.Java文件,包括D盘的子文件夹下的.java文件

  3. 把上述显示的文件都复制到mytemp文件夹中

private static void work12() throws IOException {
        /**
         * 12. 利用IO流操作文件
         * 1) 利用java代码在D盘下创建一个mytemp文件夹  :mkdir
         * 2) 显示D盘下所有的.Java文件,包括D盘的子文件夹下的.java文件 :递归
         * 3) 把上述显示的文件都复制到mytemp文件夹中 :读写
         */
        File file = new File("D:\\AAtemp");
        if(!file.exists()){
            file.mkdir();
        }
        myList(file);
    }

    private static void myList(File file)  {
        File[] files = file.listFiles();
        for (File f:files){
            if(f.isFile()&&f.getName().endsWith(".java")){
                try {
                FileInputStream fis = new FileInputStream(f);
                FileOutputStream fos = new FileOutputStream("D:\\AAAA\\"+f.getName());
                System.out.println("递归!");
                byte[] b = new byte[20];
                int len;
                System.out.println("开始循环!");
                    while ((len = fis.read(b)) != -1) {
                        fos.write(b, 0, len);
                    }
                System.out.println(f);
                }catch (IOException e){
                    e.printStackTrace();
                }
            }else if(f.isDirectory()){
                myList(f);
            }
        }
    }

13.列出D盘下的所有文件,子目录中的文件,子目录的子目录都要列出,依次类推,总之D盘下所有的文件都要输出(50分)

  1. 在列出的时候判断是否子文件夹(10分)

  2. 若不是子文件夹直接输出文件名(20分)

  3. 若是子文件夹使用递归的形式继续输出子目录中的文件(20分)

!以上题目已覆盖

  1. 先将“欢迎您来您学习,高薪就业”写入到文件”hello.txt”中,再读取该文件中的内容。

!以上题目已覆盖

小白初学,如有问题请多指教!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值