IO流的常见面试题

**** 新手切记,得多实践去敲,不要以为自己看懂了,就会了,一定一定一定的多敲代码。****

(一) 在电脑D盘下创建一个文件为HelloWorld.txt文件,判断他是文件还是目录,在创建一个目录IOTest,之后将HelloWorld.txt移动到IOTest目录下去;之后遍历IOTest这个目录下的文

(二) 递归实现输入任意目录,列出文件以及文件夹,效果看图

(三) 递归实现列出当前工程下所有.java文件

(四)从磁盘读取一个文件到内存中,再打印到控制台

(五) 在程序中写一个"HelloJavaWorld你好世界"输出到操作系统文件Hello.txt文件中

(六) 拷贝一张图片,从一个目录到另外一个目录下(PS:是拷贝是不是移动)

第一题

解题思路都在代码上
/**
     *  在电脑D盘下创建一个文件为HelloWorld.txt文件,
     *  判断他是文件还是目录,在创建一个目录IOTest,之后将HelloWorld.txt移动到IOTest目录下去;之后遍历IOTest这个目录下的文
     */
    @Test
    public void test08() throws Exception{
        String path="D:/HelloWorld.txt";
        //首先创建出HelloWorld.txt文件
        File file = new File(path);
        boolean isFile = file.isFile();
        if(isFile){
            System.out.println("该文件是一个文件不是一个文件夹");
        }
        boolean isDir = file.isDirectory();
        if(isDir){
            System.out.println("该文件是一个文件夹");
        }
        //创建IOTest目录
        String IOtest= "D:/IOTest";
        File file1 = new File(IOtest);
        file1.mkdirs();

        if(file.renameTo(new File(file1.getPath()+"/"+file.getName()))){
            System.out.println("文件移动成功");
        }
    }

第二题

/**
 * @author :tiantian
 * @date :2022/2/26 11:57
 */
public class FileUtils {
    public static List<File> getFiles(String dir) {
        //存放遍历出来的file
        List<File> files = new ArrayList<>();

        File file = new File(dir);


        if(file.exists()&&file.isDirectory()){
            logic(file,files);
        }

        return files;
    }

    //重点理解递归思想
    public static List<File> logic(File file,List<File> files){

        File[] files1 = file.listFiles();

        if(files1 == null){
            return null;
        }

        for (File file1 : files1) {
            files.add(file1);

            //递归思想体现处
            logic(file1,files);
        }
        return files;
    }
}

测试

/**
     * 递归实现输入任意目录,列出文件以及文件夹,效果看图
     *
     * 编程中有一个思想很重要,就是提取公共类,封装成工具类,这个帮助我们节省很多事
     */
    @Test
    public void test09(){
        String dir = "D:/";
        List<File> files = FileUtils.getFiles(dir);
        for (File file : files) {
            System.out.println(file);
        }
    }

第三题

/**
     * 输出所有.txt的文件
     * 直接运用第二题的工具类实现
     */
    @Test
    public void test10(){
        String path="写你的文件地址";
        List<File> files = FileUtils.getFiles(path);
        for (File file : files) {
            if(file.toString().endsWith(".txt")){
                System.out.println(file);
            }
        }
    }

第四题

 /**
     * 从磁盘读取一个文件到内存中,再打印到控制台
     */
    @Test
    public void testIO5() throws Exception {
        String path="D:/HelloWorld.txt";
        //创建连接
        File file = new File(path);
        //获取
        FileInputStream fileInputStream = new FileInputStream(file);
        //提取
        InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);

        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

        String line="";
        while ((line = bufferedReader.readLine()) !=null){
            System.out.println(line);
        }

        fileInputStream.close();
        inputStreamReader.close();
        bufferedReader.close();
    }

第五题

 /**
     * 在程序中写一个"HelloJavaWorld你好世界"输出到操作系统文件Hello.txt文件中
     */
    @Test
    public void test6() throws Exception {
        String path = "D:/Hello.txt";
        File file = new File(path);

        FileOutputStream fileOutputStream = new FileOutputStream(file);

        fileOutputStream.write("袁子祥你是最棒的".getBytes(StandardCharsets.UTF_8));

        fileOutputStream.flush();
        fileOutputStream.close();
    }

第六题

/**
     * 拷贝一张图片,从一个目录到另外一个目录下(PS:是拷贝是不是移动)
     */
    @Test
    public void testIO7() throws Exception {
        File oldFile = new File("D:/IOTest");
        File newFile = new File("D:/Haha");


        FileInputStream inputStream = new FileInputStream(oldFile);
        FileOutputStream fileOutputStream = new FileOutputStream(newFile);

        int len = 0;
        byte[] buf = new byte[1024];
        while ((len = inputStream.read(buf)) != -1) {
            // 3、把读取到的字节流写入到目的地址的文件里面
            fileOutputStream.write(buf, 0, len);
        }
        fileOutputStream.flush();

        inputStream.close();
        fileOutputStream.close();
    }

新手上路,如有不对,请多多指教,谢谢

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值