瘋狂Java學習筆記(022)
阿新 • • 發佈:2018-12-01
做幾個練習題:
1.設計程式實現將一個路徑下的所有.jpg圖片複製到c:/jpgs目錄下. (注意同名檔案的處理!!!)
package com.test; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; /* * 設計程式實現將一個路徑下的所有.jpg圖片複製到c:/jpgs目錄下. (注意同名檔案的處理!!!) */ public class CopyJpgDemo { public static void main(String[] args) throwsException { File src = new File("c:/srcDir"); File destDir = new File("c:/demosFolder"); copy(src,destDir); } public static void copy(File dir,File destDir) throws Exception{ File[] files = dir.listFiles(); for (File file : files) { if(file.isFile() && file.getName().toLowerCase().endsWith(".jpg")){ //c:\srcDir\dog.jpg System.out.println(file.getAbsolutePath().replaceAll("[\\:]", "_")); // File newFile = new File(destDir, file.getAbsolutePath().replaceAll("[\\:]", "_"));// // FileUtils.copyFile(file, newFile); }else if(file.isDirectory()){ // copy(file,destDir); } } } }
2.自定義方法實現:查詢指定路徑下的所有大於2M的文字檔案.顯示其基本資訊.
package com.test; import java.io.File; /* * 自定義方法實現:查詢指定路徑下的所有大於2M的文字檔案.顯示其基本資訊. */ public class FindDemo1 { public static void main(String[] args) { File src = new File("c:/srcDir"); find(src); } public static void find(File dir){ File[] files = dir.listFiles(); if(files != null){ for (File file : files) { if(file.isFile() && file.getName().toLowerCase().endsWith(".txt") && file.length() > 1024 * 1024 * 2){ System.out.println(file.getAbsolutePath()+" : "+file.length()/1024/1024 + " MB"); }else{ //遞迴呼叫 find(file); } } } } }
3.自定義方法實現:查詢指定路徑下的所有檔名中包含"java"字樣的檔案 * (注意不是以.java為字尾的檔案,而是檔名中包含java字樣),並把檔案列表儲存在c:\java_file_list.txt中.
package com.test; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; /* * 自定義方法實現:查詢指定路徑下的所有檔名中包含"java"字樣的檔案 * (注意不是以.java為字尾的檔案,而是檔名中包含java字樣),並把檔案列表儲存在c:\java_file_list.txt中. */ public class FindDemo2 { public static void main(String[] args) throws Exception { File src = new File("c:/srcDir"); File file = new File("c:/java_file_list.txt"); find(src,file); } public static void find(File dir,File dest) throws Exception{ File[] files = dir.listFiles(); for (File file : files) { if(file.isFile()){ String name = file.getName(); //把檔名中的字尾去掉 name = name.substring(0, name.lastIndexOf(".")); if(name.contains("java")){ BufferedWriter bw = new BufferedWriter(new FileWriter(dest,true)); bw.write(file.getAbsolutePath()); bw.newLine(); bw.close(); } }else{ find(file,dest); } } } }
4.設計程式實現從一個包含5個人名(一個名字佔一行)的文字檔案中隨機獲取兩個不同的人名字!
package com.test; import java.io.BufferedReader; import java.io.FileReader; import java.util.ArrayList; /* * 設計程式實現從一個包含5個人名(一個名字佔一行)的文字檔案中隨機獲取兩個不同的人名字! */ public class GetRandomNameDemo { public static void main(String[] args) throws Exception { ArrayList<String> list = new ArrayList<String>(); BufferedReader br = new BufferedReader(new FileReader("name.txt")); String name = null; while((name = br.readLine()) != null){ list.add(name); } br.close(); //隨機產生兩個不同的數 int r1 = (int)(Math.random() * list.size()); int r2 = (int)(Math.random() * list.size()); while(r2 == r1){ r2 = (int)(Math.random() * list.size()); } System.out.println(list.get(r1) +" - "+ list.get(r2)); } }
5.統計網站訪問次數最多的前三名 * * 10.0.0.1 www.youku.com 200
package com.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.util.Comparator; import java.util.TreeMap; import java.util.TreeSet; /* * 統計網站訪問次數最多的前三名 * * 10.0.0.1 www.youku.com 200 * */ public class LogCountDemo { public static void main(String[] args) throws Exception { //讀取日誌 BufferedReader br = new BufferedReader(new FileReader("c:/test_log.txt")); //建立集合,用於存放網站和次數 TreeMap<String, Integer> map = new TreeMap<String,Integer>(); //切出網址,統計次數 String line = null; while((line = br.readLine()) != null){ // String site = line.split(" ")[1]; //新增到集合:第一次出現:<site,1>,否則:<site,舊值+1> if(!map.containsKey(site)){ map.put(site, 1); }else{ map.put(site, map.get(site) + 1); } } br.close(); //建立新集合. TreeSet<String> set = new TreeSet<String>(new Comparator<String>() { //www.baidu.com_5 @Override public int compare(String o1, String o2) { int n1 = Integer.parseInt(o1.split("_")[1]); int n2 = Integer.parseInt(o2.split("_")[1]); String site1 = o1.split("_")[0]; String site2 = o2.split("_")[0]; //主要條件 int r1 = n2 - n1; // int r2 = r1 == 0?site1.compareTo(site2):r1; return r2; } }); //遍歷map,將元素放到新集合中 for(String site : map.keySet()){ set.add((site) + "_" + map.get(site)); } //寫出到檔案 BufferedWriter bw = new BufferedWriter(new FileWriter("count.txt")); int x = 0; for (String string : set) { String[] split = string.split("_"); bw.write(split[1] + " "+ split[0]); bw.newLine(); x++; if(x >= 3){ break; } } bw.close(); } }
6.自定義類,使用LinkedList模擬棧結構. 提供如下功能: (1)壓棧 (2)彈棧 (3)遍歷 (4)清空
package com.test; /* * 1.自定義類,使用LinkedList模擬棧結構. 提供如下功能: (1)壓棧 (2)彈棧 (3)遍歷 (4)清空 */ import java.util.Iterator; import java.util.LinkedList; class MyStack<E>{ //在成員位置保持一個LinkedList物件,功能都是它實現的!! LinkedList<E> list = new LinkedList<E>(); //壓棧 public void push(E e){ //在末尾新增元素 list.add(e); } //彈棧 public E pop(){ return list.removeLast(); } //迭代器 public Iterator<E> iterator(){ return list.iterator(); } //清空 public void clear(){ list.clear(); } //獲取大小 public int size(){ return list.size(); } } public class MyStackDemo { public static void main(String[] args) { //測試自定義棧 MyStack<String> ms = new MyStack<String>(); // ms.push("abc"); ms.push("java"); ms.push("mysql"); /* // System.out.println(ms.size()); //迴圈彈棧 while(ms.size() > 0){ System.out.println(ms.pop()); } */ /* //迭代器 Iterator<String> it = ms.iterator(); while(it.hasNext()){ System.out.println(it.next()); } */ //清空 ms.clear(); System.out.println(ms.size()); } }