首页 > 其他分享 >IO流综合案例

IO流综合案例

时间:2024-09-06 16:16:44浏览次数:12  
标签:java file IO 案例 File target new 综合 name

分析以下需求,并用代码实现

训练目标

​ 掌握java中字符流的基本使用,以及理解其在实际开发中的应用

需求描述

​ 编写一个程序,把一个目录里边的所有带.java文件拷贝到另一个目录中。

实现提示

  1. 用File对象封装目录
  2. 通过listFiles()方法获取该目录下所有的文件或者文件夹的File对象数组
  3. 遍历这个File数组,得到每一个File对象
  4. 判断该File对象是否是文件
    • 如果是文件
    • 继续判断是否以.java结尾
      • 是:复制文件
      • 否:不复制
        方法一
import org.junit.Test;

import java.io.*;
import java.util.ArrayList;

public class lx04 {
    public ArrayList<String> al = new ArrayList<>();
@Test
    public void test() throws IOException {
        File file = new File("D:\\project");
        name(file);
        for (String o : al) {
            File sourceFile = new File(o);
            if (sourceFile.exists()) {
                String name = sourceFile.getName();
                String targetPath = "D:\\java\\java\\" + name;
                try (InputStream is = new FileInputStream(sourceFile);
                     BufferedInputStream bis = new BufferedInputStream(is);
                     OutputStream os = new FileOutputStream(targetPath);
                     BufferedOutputStream bos = new BufferedOutputStream(os)) {
                    int c;
                    while ((c = bis.read())!= -1) {
                        bos.write((char) c);
                    }
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            } else {
                System.out.println("源文件不存在:" + sourceFile.getAbsolutePath());
            }
        }
    }

    public void name(File file) {
        boolean directory = file.isDirectory();
        if (!directory) {
            String name = file.getName();
            if (name.length() > 5) {
                if (name.substring(name.length() - 5).equals(".java")){
                al.add(file.getAbsolutePath());
            }
            }
        } else {
            File[] files = file.listFiles();
            if (files!= null) {
                for (File f : files) {
                    name(f);
                }
            } else {
                System.out.println("目录为空:" + file.getAbsolutePath());
            }
        }
    }
}

方法二

 @Test
    public void test01() {
        File file = new File("D:\\qy178-course\\day0903");//查询的目录
        File file02 = new File("D:\\qy178-course\\bbbb");//目标目录
        test(file, file02);
    }

    private void test(File file, File target) {
        //判断目标目录是否存在。
        if (!target.exists()) {
            target.mkdirs();//创建目标目录
        }
        //判断传递的文件是否为目录
        boolean b = file.isDirectory();
        if(b){
            //获取指定目录下所有的子文件对象
            File[] files = file.listFiles();
            for(File f:files){
                test(f,target);
            }
        }else{
            //表示文件 并获取文件名称
            String name = file.getName();
            if(name.endsWith(".java")){//表示为java文件。
                //复制功能
                copy(file,new File(target.getPath()+"\\"+name)); //
            }
        }

    }

    private void copy(File file,File target){
        Reader reader= null;
        Writer writer= null;
        try {
            reader = new FileReader(file);
            writer = new FileWriter(target);
            int c;
            while ((c=reader.read())!=-1){
                writer.write(c);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            try {
                reader.close();
                writer.close();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }


    }

标签:java,file,IO,案例,File,target,new,综合,name
From: https://www.cnblogs.com/xiaomubupi/p/18400455

相关文章

  • IO流
    什么是IO流IO:(inputoutputstream):输入输出流。针对文件中的内容进行的操作。读取文件中的内容和向文件中写入内容。IO的分类按照方向:输入流和输出流按照内容:字节流和字符流。按照处理:处理流和节点流常见流类有那些字节输出流。OutputStream它是所有字节输出流类......
  • 【Java】【SpringBoot】读取配置文件(appliation.yml)的值
    这里叙述4中读取配置文件(application.yml)方法  application.yml配置如下:#测试数据(用于读取数据文件值)student:name:lisiage:13name:zhangsan使用@value注解@SpringBootTestpublicclassApplicationTest{@Value("${student.name}")privateStr......
  • AI绘画Stable Diffusion常用插件合集
    宝子们,早上好啊~StableDiffusion常用插件,已经给大家整理好了,自取就好。拥有这些SD常用插件,让您的图像生成和编辑过程更加强大、直观、多样化。以下插件集成了一系列增强功能,覆盖从自动补全提示词到高分辨率图像放大,从双语界面到无边图像浏览,为用户提供了无缝的StableDif......
  • CF1469D Ceil Divisions题解
    CF1469DCeilDivisions感觉是很巧妙的一题?一开始想到,对于任何小于$n$的数$x$,直接对它除以$n$可以得到$1$。那么对$3\simn-1$做完此操作后,还剩下$1$、$2$、$n$。将$n$变成$1$要花费$logn$次,显然总操作次数超过了$n+5$次。进一步地,发现瓶颈在于把$n$变成$1$,于是利用根号,用$\sqr......
  • STM32学习笔记——GPIO
    GPIO——GeneralPurposeInputOutput——通用输入输出出口特点:通用性、快速翻转、中断支持、支持多种工作模式。8种输入输出模式模式性质特征应用标识浮空输入数字输入可读取引脚电平,若引脚悬空,则电平不确定适用于需要读取外部信号的场景,但外部信号状态......
  • axios使用 && axios拦截器
    1.安装npminstallaxios2.使用_axios.post("/api/auth/",form.value).then((res)=>{if(res.data.code===0){//{id:1,name:username.value,token:"xxx88sdkweisdfsd"}store.doLogin(res.data.data)ro......
  • JSP酒店综合管理平台7ez9p--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统功能:用户,收银,客房信息,散客预订,团体预订,房间分类,换房信息,取消预订,散客结账,团体结账,交接信息,监控检测,系统提醒技术要求:开发语言:JSP前端使用:H......
  • 基于nodejs+vue大学校园网络综合服务平台[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和高校规模的不断扩大,大学校园内的信息交流与服务需求日益多样化与复杂化。传统的管理与服务模式已难以满足师生们高效、便捷的生活......
  • 【AI绘画】Stable Diffusion 喂饭教程来啦!价值上万的模特AI换装方法
    大家好,我是爱绘画的彤姐。在电商领域,最近AI模特换装特别火,结合网上的教程和实战,总结了一个最简单性价比最高的方法。今天我们就一起学起来!!一思路整体的思路其实很简单,分为三步:获取模特服饰的蒙版获取模特的姿势特征图通过图生图局部重绘(上传蒙版)出图在整个过程......
  • IntelliJ IDEA 2024.1.6 (Ultimate Edition)中配置Java Web应用程序
    1. 前期准备工作已经下载安装了JDK(https://www.oracle.com/cn/java/technologies/javase/javase8u211-later-archive-downloads.html)和Tomcat(https://tomcat.apache.org/),并配置了环境变量(安装版的JDK和Tomcat不需要配置环境变量),注意JDK和Tomcat的版本号要相互适应。去官网下......