前言
所謂知識點複習 , 其實給的都是實際例子 . 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 );
}
}
心得
對於遞歸操作 , 我們要做的是先將這個方法(函數)的主要部分實現再去考慮遞歸.
文件操作和目錄操作非常實用而且常用 , 這些例子並沒有將所有的知識點給訓練 , 但是絕大部分是訓練到了 .
我們學完一門技術之後,一定要刻意練習每一個知識點 , 並且進行自己總結記錄(產生自己的心得) , 瞭解每一個知識點可以做什麼事 , 這樣纔是學習的最好的辦法.