IO练习

Posted 小布丁value

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO练习相关的知识,希望对你有一定的参考价值。

巩固知识点:
递归,
匿名内部类https://blog.csdn.net/weixin_49263647/article/details/116863520?
继承,秒呀
注意:
遍历目录两个方法的区别

public String[] list() 
public File[] listFiles()
   * 要求:
   * 1、指定起始路径下包含指定词的所有文件(非隐藏文件)
   * 2、打印出全路径
   * 列如:
   * 目录结构如下:
   * /user/a/a1.java
   * /user/a/a2.java
   * /user/java/j1.java
   * /user/java/a.txt
   * /user/java/b.mp4
   * /user/file/java11.txt
   * /user/file/.java34.txt
   *
   * 打印/user目录下含Java的文件,搜索结果如下
   * /user/a/a1.java
   * /user/a/a2.java
   * /user/java/j1.java
   * /user/file/java11.txt
   *
   * @param path:指定路径
   * @param filter:过滤关键词
   */
  public static void searchFile(String path, String filter) {

  }
public static void main(String[] args) throws Exception {
      String  path = ("D:\\\\dandan");
        String filter =".jar";
        Recursion1(path,filter);
    }
       public static void Recursion1(String path,String filter) {
           //1.参数有效性
           File file = new File(path);
           if (!file.exists()) {
               return;
           }
           Recursion2(file,filter);
       }
       public static void Recursion2(File file,String filter){

        //目录存在
           //1,遍历目录下所有的子文件或 子文件夹
           File[] files = file.listFiles(new FilenameFilter() {
               @Override
               public boolean accept(File dir, String name) {
                   if(name.startsWith(".")){
                       return false;
                   }else{
                       return true;
                   }
               }
           });
           for(File f :files){
               if (f.isDirectory()){
                   Recursion2(f,filter);
               }else {
                   //f是全路径,f.getName是字符串
                   if (f.getName().contains(filter)){
                       System.out.println(f);
                   }
               }
           }
       }

666了
在这里插入图片描述

  • 一定注意匿名内部类的用法, 如果不用匿名内部类,代码的篇幅和封装 还有多继承的关系都会大大减低

2.作业:给定指定目录,将该目录下的文件按照树形结构打印
/**
* 树形结构打印
* @param filePath
*/
public static void printTree(String filePath) {
}

public class io2 {
    public static void main(String[] args) {
        int depth=0;
       File  file =new File("D:\\\\dfdg");

        ifDir(file,depth);
    }
    public static void ifDir(File file,int depth){
        if(file.isDirectory()){
            print(file,depth+1);
        }else{
            print(file,0);
        }
    }
    public static void print(File file,int depth){
        String tree = "|";
        for(int i =0;i<depth; i++){
            tree +="-";
        }

        if(file.isDirectory()){
            File [] files =file.listFiles();
            for(File file1 : files){
                //是文件
                System.out.println(tree + file1.getAbsolutePath());
                //是文件夹
                if(file1.isDirectory()){
                    print(file1,depth+1);
                }
            }
        }
    }
}

|-D:\\dfdg.idea
|–D:\\dfdg.idea\\compiler.xml
|–D:\\dfdg.idea\\encodings.xml
|–D:\\dfdg.idea\\misc.xml
|–D:\\dfdg.idea\\workspace.xml
|-D:\\dfdg\\dfdg.iml
|-D:\\dfdg\\pom.xml
|-D:\\dfdg\\src
|–D:\\dfdg\\src\\main
|—D:\\dfdg\\src\\main\\java
|----D:\\dfdg\\src\\main\\java\\fgbn
|-----D:\\dfdg\\src\\main\\java\\fgbn\\App.java
|–D:\\dfdg\\src\\test
在这里插入图片描述
3.
/**
* 复制功能
* @param source :源文件的地址
* @param dest:复制的位置
*
* /User/test/test1.txt
* /User/test1
*/
public static void copyFile(String source, String dest) {

}
public class IOTest2 {
    public static void main(String[] args) throws  Exception{
        String source = "D:\\\\IO\\\\a.txt";
        String test = "D:\\\\IO\\\\aA.txt";

        copyFile(source, test);
    }

        public  static   void copyFile(String source, String test) throws Exception {
        //判断源文件是否存在
            File file =  new File(source);
            FileInputStream files = new FileInputStream(source);
            FileOutputStream fileOutputStream = new FileOutputStream(test);
            byte[] bytes = new byte[4];
            int len = 0;
            while ((len = files.read(bytes)) != -1) {
                //注意这里读取数据时防止脏数据的初读
                fileOutputStream.write(bytes, 0, len);
            }
            //关流,释放资源
            fileOutputStream.close();
            files.close();


        }

    }

注意:读取数据时一定要防止脏数据哦
在这里插入图片描述

public class FISRead {
    public static void main(String[] args) throws IOException{
      	// 使用文件名称创建流对象.
       	FileInputStream fis = new FileInputStream("read.txt"); // read.txt文件中内容为abcde
      	// 定义变量,作为有效个数
        int len ;
        // 定义字节数组,作为装字节数据的容器   
        byte[] b = new byte[2];
        // 循环读取
        while (( len= fis.read(b))!=-1) {
           	// 每次读取后,把数组变成字符串打印
            System.out.println(new String(b));
        }
		// 关闭资源
        fis.close();
    }
}

输出结果:
ab
cd
ed

以上是关于IO练习的主要内容,如果未能解决你的问题,请参考以下文章

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

selenium代码练习(ApachePOI)

csharp Epicor标准练习片段

golang 去练习片段

csharp C#代码片段 - 使类成为Singleton模式。 (C#4.0+)https://heiswayi.github.io/2016/simple-singleton-pattern-us