前言
所谓知识点复习 , 其实给的都是实际例子 . Java的每一个知识点我都给了大量实用的例子 , 做一遍对巩固自己基础和提升一些经验是非常有帮助的.
复习知识点
以下的案例有些截图了 , 不过大部分没有截图 , 但大家在代码部分可以看相应的代码 , 给了非常详细的注释.
数组操作
- 求两个数组的差集
- 求两个数组的交集
- 求两个数组的并集
文件操作
- 实现将一个文件里的内容复制到另一个文件中 (字符流操作)
- 实现创建一个临时文件
- 文件路径比较方法
目录操作
目录操作大部分都是递归用法 , 所以可以提升自己的递归运用的能力.
- 递归创建目录
- 指定去删除某个目录
- 递归删除层级目录 请将原来创建的目录给删除了.
- 利用递归打印目录结构
- 在指定目录中查找文件(模糊查询…)
- 判断目录里面是否为空
- 获取并打印出系统根目录
- 获取当前目录 这里获取方法有点另类 , 但还是非常实用的.
代码笔记
数组操作部分
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 );
}
}
心得
对于递归操作 , 我们要做的是先将这个方法(函数)的主要部分实现再去考虑递归.
文件操作和目录操作非常实用而且常用 , 这些例子并没有将所有的知识点给训练 , 但是绝大部分是训练到了 .
我们学完一门技术之后,一定要刻意练习每一个知识点 , 并且进行自己总结记录(产生自己的心得) , 了解每一个知识点可以做什么事 , 这样才是学习的最好的办法.