Java知识点复习系列(1)

本文作为Java知识点复习的第一部分,通过实例探讨了数组操作、文件操作和目录操作。在数组操作中,涉及求差集、交集和并集;文件操作包括内容复制和临时文件创建;目录操作则重点讲解了递归应用,如创建、删除目录及打印目录结构。作者强调了递归方法的实现思路以及学习技术后进行刻意练习和总结的重要性。
摘要由CSDN通过智能技术生成

前言

所谓知识点复习 , 其实给的都是实际例子 . Java的每一个知识点我都给了大量实用的例子 , 做一遍对巩固自己基础和提升一些经验是非常有帮助的.

复习知识点

以下的案例有些截图了 , 不过大部分没有截图 , 但大家在代码部分可以看相应的代码 , 给了非常详细的注释.

数组操作
  1. 求两个数组的差集
  2. 求两个数组的交集
  3. 求两个数组的并集
文件操作
  1. 实现将一个文件里的内容复制到另一个文件中 (字符流操作)
  2. 实现创建一个临时文件
  3. 文件路径比较方法
目录操作

目录操作大部分都是递归用法 , 所以可以提升自己的递归运用的能力.

  1. 递归创建目录
  2. 指定去删除某个目录
  3. 递归删除层级目录 请将原来创建的目录给删除了.
  4. 利用递归打印目录结构
  5. 在指定目录中查找文件(模糊查询…)
  6. 判断目录里面是否为空
  7. 获取并打印出系统根目录
  8. 获取当前目录 这里获取方法有点另类 , 但还是非常实用的.

代码笔记

数组操作部分

public class ArrayMain {

    public static void main(String[] args) {
    /**
     * 问题1:求数组的差集 知识点: 1.数组的运用 2.集合框架的运用
     */
    Integer[] arr = new Integer[] { 1, 5, 9, 10, 20 };
    Integer[] arr1 = new Integer[] { 1, 7, 9, 10, 20 };

    List<Integer> listA = new ArrayList<>();
    List<Integer> listB = new ArrayList<>();

    for (int i = 0; i < arr.length; i++) {
        listA.add(arr[i]);
        listB.add(arr1[i]);
    }

    // boolean flag = listA.removeAll(listB );
    // if(flag ) {
    // System.out.println(listA.size() );
    // }
    /**
     * 问题2:求两个数组的交集
     */
    // boolean flag = listA.retainAll(listB );
    // if(flag ) {
    // System.out.println(listA.size() );
    // }

    /**
     * 问题3:求两个数组的并集 
     * 知识点: 
     * 1. set知识点的复习(用到它的唯一性和无序性)
     */
    Set<Integer> set = new HashSet<>();
    set.addAll(listA);
    set.addAll(listB);
    System.out.println(set.size());

    }

文件操作部分

package FileOper;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

/**
 * Java知识点复习系列(1)
 * Java文件操作实例
 * @author Administrator
 *
 */
public class FileMain {


    /**
     * 实现将一个文件里的内容复制到另一个文件中 , 字符流操作
     */
    public static boolean copyToFile(File src, File dest) {
    if (src == null || dest == null) {
        return false;
    }

    // 声明输出字符流和读入字符流
    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(src)));
        PrintWriter writer = new PrintWriter(new FileOutputStream(dest), true);

        // 开始将src的数据复制到writer中
        String line = reader.readLine();
        while (line != null) {

        writer.write(line + "\n");
        writer.flush();

        line = reader.readLine();
        }

    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }

    System.out.println("写入" + dest.getAbsolutePath() + "成功!");
    return true;

    }

    /**
     * 实现创建一个临时文件 
     */
    public static void createTempFile() {

    File tempFile = new File("");
    try {
        tempFile = tempFile.createTempFile("Ghoset", ".temp");
        //也可以指定目录创建临时文件
        System.out.println("创建临时文件的路径为:" + tempFile.getAbsolutePath());

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

    }

    /**
     * 文件路径比较
     */
    public static void fileComple(File a, File b) {
    int ret = a.compareTo(b );
    if(ret != 0 ) {
        System.out.println("不是同一个文件!" );
    }else {
        System.out.println("是同一个文件!" );
    }
    }

    public static void main(String[] args) {
    //题目1:
     File src = new File("F:\\JAVA测试\\111\\1.txt" );
     File dest = new File("F:\\JAVA测试\\111\\test.txt" );
    // boolean flag = copyToFile(src, dest );

     //题目2:
    //createTempFile();

     //题目3:
    fileComple(src , dest );

    }

}

目录操作部分

package DirectoryOper;

import java.io.File;

/**
 * Java知识点复习(1)
 * Java目录操作实例
 * @author Administrator
 *
 */
public class DirectoryMain {

    /**
     * 递归创建目录
     */
    public static boolean createDir(String filePath ) {
    File dire = new File(filePath );
    if(!dire.isDirectory() ) {  //一定要是存在这个目录才会显示ture
        if(!dire.exists() ) {
        boolean flag = dire.mkdirs();   
        return flag;
        }
    }

        return false;
    }

    /**
     * 指定去删除某个目录
     */
    public static boolean deleteDir(String filePath ) {
    File file = new File(filePath );
    if(!file.isDirectory() ) {  //如果没有存在这个目录
        return false;
    }
    file.delete();
    return true;

    }

    /**
     * 递归删除目录  , 请将原来创建的目录给删除了.
     */
    public static boolean removeAllDir(File filePath ) {

        try {
            if(filePath.isDirectory() ) {
                File parent = filePath.getParentFile() ;
                filePath.delete();
                System.out.println(filePath.getAbsolutePath() + "删除成功!" );
                removeAllDir(parent );
            }
    }catch(Exception e ) {
        return true;
    }
        return true;
    }


    /**
     * 利用递归打印目录结构
     * 
     */
    public static void showDir(int indent , File file ) {

    //1.主要代码部分
    for(int i = 0 ; i < indent ; i++ ) {
        System.out.print("-" );
    }
    System.out.println(file.getName() );

    //2.递归部分

    if(file.isDirectory() ) {
        File[] lists = file.listFiles();
        for(int i = 0 ; i < lists.length ; i++ ) {
        showDir(indent + 4 , lists[i] );
        }

    }
    }


    /**
     * 在指定目录中查找文件(模糊查询...)
     * 在F盘搜索所有以2017开头的文件或目录
     */
    public static void findFile(String fileName , File file ) {
    //1.获取这个目录下的所有文件
    File[] lists = file.listFiles();

    //2.直接进行遍历操作然后判断文件名或目录名 , 当然这里可以使用for each遍历.
    for(int i = 0 ; i < lists.length ; i++ ) {
        if(lists[i].getName().startsWith(fileName )) {
        System.out.println("find:" + lists[i].getName() );
        }
    }


    }

    /**
     * 主测试方法
     * @param args
     */
    public static void main(String[] args) {
    String file = "F:\\2017\\11\\22\\33";
    //题目1:
//  boolean flag = createDir(file );
//  if(flag ) {
//      System.out.println("创建目录成功!" );
//  }else {
//      System.out.println("创建目录失败!" );
//  }

    //题目2:
//  boolean flag = deleteDir(file );
//  if(flag ) {
//      System.out.println("删除成功!" );
//  }else {
//      System.out.println("删除失败!" );
//  }

    //题目3:
    //获取它的父目录 , 我们可以用这个方法来解决删除目录的问题
    File file1 = new File(file );
    //System.out.println(file1.getParent() );
    //removeAllDir(file1 );

    //题目4:判断目录里面是否为空
//  String[] lists = file1.list();
//  if(lists.length > 0 ) {
//      System.out.println("里面存在" + lists.length + "文件" );
//  }else {
//      System.out.println("里面没有存在文件!" );
//  }


    //题目5:利用递归打开出当前目录下的结构
    //showDir(1 , file1 );

    //题目6:在指定目录中查找文件
//  File fFile = new File("F:\\" );
//  String str = "2017";
//  findFile(str , fFile  );

    //题目7:获取并打印出系统根目录
//  File[] roots = File.listRoots();
//  for(File v : roots ) {
//      System.out.println(v.getAbsolutePath() );
//  }

    //题目8:获取当前目录 , 这里获取方法有点另类 , 但还是非常实用的.
    String currentDir = System.getProperty("user.dir" );    //这里没有必须强记 , 只要知道这个方法 用到的时候去查看就可以了.
    System.out.println("当前的目录为:" + currentDir );

    }

}

心得

  • 对于递归操作 , 我们要做的是先将这个方法(函数)的主要部分实现再去考虑递归.

  • 文件操作和目录操作非常实用而且常用 , 这些例子并没有将所有的知识点给训练 , 但是绝大部分是训练到了 .

  • 我们学完一门技术之后,一定要刻意练习每一个知识点 , 并且进行自己总结记录(产生自己的心得) , 了解每一个知识点可以做什么事 , 这样才是学习的最好的办法.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值