編寫一個程序,將d:\java目錄下的所有.java文件復(fù)制到d:\jad目錄下蚓哩,并將原來文件的擴展名從.java改為.jad构灸。

listFiles方法接受一個FileFilter對象,這個FileFilter對象就是過慮的策略對象杖剪,不同的人提供不同的FileFilter實現(xiàn)冻押,即提供了不同的過濾策略。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Jad2Java {
public static void main(String[] args) throws Exception {
File srcDir =new File("java");
if(!(srcDir.exists()&& srcDir.isDirectory()))
throw new Exception("目錄不存在");
File[] files= srcDir.listFiles(
new FilenameFilter(){
publicboolean accept(File dir, String name) {
returnname.endsWith(".java");
}
}
);
System.out.println(files.length);
File destDir= new File("jad");
if(!destDir.exists())destDir.mkdir();
for(File f:files){
FileInputStream fis = new FileInputStream(f);
StringdestFileName = f.getName().replaceAll("\\.java$", ".jad");
FileOutputStreamfos = new FileOutputStream(new File(destDir,destFileName));
copy(fis,fos);
fis.close();
fos.close();
}
}
private static void copy(InputStream ips,OutputStream ops) throws Exception{
int len = 0;
byte[] buf =new byte[1024];
while((len =ips.read(buf)) != -1){
ops.write(buf,0,len);
}
}
}

由本題總結(jié)的思想及策略模式的解析:

class jad2java{

  1. 得到某個目錄下的所有的java文件集合
    1.1 得到目錄 File srcDir = newFile("d:\java");
    1.2 得到目錄下的所有java文件:File[] files =srcDir.listFiles(new MyFileFilter());
    1.3 只想得到.java的文件: class MyFileFilterimplememyts FileFilter{
    publicboolean accept(File pathname){
    returnpathname.getName().endsWith(".java")
    }
    }
    2.將每個文件復(fù)制到另外一個目錄盛嘿,并改擴展名
    2.1 得到目標(biāo)目錄洛巢,如果目標(biāo)目錄不存在,則創(chuàng)建之
    2.2 根據(jù)源文件名得到目標(biāo)文件名次兆,注意要用正則表達式稿茉,注意.的轉(zhuǎn)義。
    2.3 根據(jù)表示目錄的File和目標(biāo)文件名的字符串芥炭,得到表示目標(biāo)文件的File漓库。
    //要在硬盤中準確地創(chuàng)建出一個文件,需要知道文件名和文件的目錄园蝠。
    2.4 將源文件的流拷貝成目標(biāo)文件流渺蒿,拷貝方法獨立成為一個方法,方法的參數(shù)采用抽象流的形式彪薛。
    //方法接受的參數(shù)類型盡量面向父類茂装,越抽象越好,這樣適應(yīng)面更寬廣善延。
    }
    分析listFiles方法內(nèi)部的策略模式實現(xiàn)原理
File[] listFiles(FileFilter filter){
File[] files =listFiles();
//Arraylis tacceptedFilesList = new ArrayList();
File[] acceptedFiles= new File[files.length];
int pos = 0;
for(File file:files){
booleanaccepted = filter.accept(file);
if(accepted){
//acceptedFilesList.add(file);
acceptedFiles[pos++]= file;
}
}
Arrays.copyOf(acceptedFiles,pos);
//return(File[])accpetedFilesList.toArray();
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末少态,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子易遣,更是在濱河造成了極大的恐慌彼妻,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異侨歉,居然都是意外死亡屋摇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門幽邓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來摊册,“玉大人,你說我怎么就攤上這事颊艳。” “怎么了忘分?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵棋枕,是天一觀的道長。 經(jīng)常有香客問我妒峦,道長重斑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任肯骇,我火速辦了婚禮窥浪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘笛丙。我一直安慰自己漾脂,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布胚鸯。 她就那樣靜靜地躺著骨稿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪姜钳。 梳的紋絲不亂的頭發(fā)上坦冠,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音哥桥,去河邊找鬼辙浑。 笑死,一個胖子當(dāng)著我的面吹牛拟糕,可吹牛的內(nèi)容都是我干的判呕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼已卸,長吁一口氣:“原來是場噩夢啊……” “哼佛玄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起累澡,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤梦抢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后愧哟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奥吩,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡哼蛆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了霞赫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腮介。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖端衰,靈堂內(nèi)的尸體忽然破棺而出叠洗,到底是詐尸還是另有隱情,我是刑警寧澤旅东,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布灭抑,位于F島的核電站,受9級特大地震影響抵代,放射性物質(zhì)發(fā)生泄漏腾节。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一荤牍、第九天 我趴在偏房一處隱蔽的房頂上張望案腺。 院中可真熱鬧,春花似錦康吵、人聲如沸劈榨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鞋既。三九已至,卻和暖如春耍铜,著一層夾襖步出監(jiān)牢的瞬間邑闺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工棕兼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留陡舅,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓伴挚,卻偏偏與公主長得像靶衍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子茎芋,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法颅眶,類相關(guān)的語法,內(nèi)部類的語法田弥,繼承相關(guān)的語法涛酗,異常的語法,線程的語...
    子非魚_t_閱讀 31,587評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)商叹,斷路器燕刻,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • 雨后的天空總是格外的清新,連空氣里都彌漫著讓人舒服的味道剖笙,偶爾一陣風(fēng)吹過來卵洗,會有絲絲的涼意,在這樣悶熱的夏天著實讓...
    Silvia15閱讀 236評論 0 1
  • 吱吱的蟬鳴描繪出夏天背景 閉眼躺在聲音的河流里 一個蟬變成許多蟬 許多蟬變成一個蟬 紅的黃的白的車燈呢喃的細語 呼...
    樸二雄閱讀 141評論 0 3
  • 最近經(jīng)常被人評論弥咪。從染了頭發(fā)開始过蹂,有人說我變丑了,有人說非主流聚至,有人說我作死榴啸,也有人說還不錯啊。對于這一切我會象...
    哈特塞克西閱讀 92評論 0 0