java掃描.txt文件,根據(jù)特征提取ip翔悠,并將結(jié)果存入到txt中业崖。

一、項(xiàng)目描述

前言:同事希望根據(jù)特定的規(guī)則蓄愁,在4M多的txt文件中提取ip字段双炕,當(dāng)然這個(gè)ip字段滿足一定的規(guī)則。如下圖所示撮抓,當(dāng)存在“| ntp-monlist: ”字段時(shí)妇斤,需要向前找4行,然后將ip取出來(lái)丹拯。如下圖站超,箭頭1不需要截取,箭頭2需要截取乖酬。

需要截取的ip.png

希望實(shí)現(xiàn)的功能:將txt文件和jar放在同一個(gè)目錄死相,執(zhí)行java文件后,將文件中的ip字段提取出來(lái)剑刑,存入到txt文件中媳纬。

實(shí)現(xiàn)思路: 第一遍讀取txt文件先找出所需要尋找的ip的段落位置,并將其存入到ArrayList中施掏,第二遍讀取txt文件钮惠,根據(jù)ArrayList將含有ip的字段讀取出來(lái),并將其截取寫入到txt文件中七芭。

二素挽、項(xiàng)目截圖

.jar程序執(zhí)行后,識(shí)別result.txt文件(4M多狸驳,共9千多行)预明,然后將生成result2.txt文件(2千多個(gè)ip),小工具執(zhí)行的結(jié)果如圖所示耙箍。


工具執(zhí)行結(jié)果

四撰糠、部分代碼

  • 4.1、找到關(guān)鍵詞“| ntp-monlist: ”所在字段辩昆,然后將數(shù)據(jù)存入到Arraylist中阅酪,這里無(wú)法存入到數(shù)組中,因?yàn)閿?shù)組需要賦值初始化。這里需要注意的是术辐,找到關(guān)鍵字以后需要向上找四行砚尽,才是所需要找的ip的位置。
 /**
     * 讀取txt文件的內(nèi)容辉词,返回命中的arraylist,由于array不可初始化必須要設(shè)置大小必孤。所以用arraylist
     * @param file 想要讀取的文件對(duì)象
     * @return 返回命中關(guān)鍵字的對(duì)象數(shù)組
     */
    public static ArrayList<Integer> getFileArray(File file){
        StringBuilder result = new StringBuilder();
        ArrayList<Integer> list = new ArrayList<Integer>();
        int status=0;
        int status2=0;
        try{
            BufferedReader br = new BufferedReader(new FileReader(file));//構(gòu)造一個(gè)BufferedReader類來(lái)讀取文件
            String s = null;       
            while((s = br.readLine())!=null){//使用readLine方法,一次讀一             
                status=status+1;
                //判斷是否包含| ntp-monlist: 
                if(s.equals("| ntp-monlist: ")) {
                    status2=status2+1;
                    //命中關(guān)鍵字后瑞躺,向上找4行
                    list.add(status-4);
                }               
            }
            br.close();    
        }catch(Exception e){
            e.printStackTrace();
        }
        return list;
    }    
  • 4.2敷搪、根據(jù)ArrayList的位置,找到對(duì)應(yīng)的段落隘蝎,將取出的字符串存入到ArrayList
 /**
     * 讀取txt文件的內(nèi)容购啄,根據(jù)數(shù)組下標(biāo),返回命中選中的結(jié)果
     * @param file 想要讀取的文件對(duì)象
     * @param List 需要提取的行數(shù)
     * @return 返回文件內(nèi)容
     */
    public static ArrayList<String> getCodeChosseList(File file,ArrayList<Integer> List){
        StringBuilder result = new StringBuilder();
        ArrayList<String> resultList = new ArrayList<String>();
        int status=0;
        int status2=0;
        try{
            BufferedReader br = new BufferedReader(new FileReader(file));//構(gòu)造一個(gè)BufferedReader類來(lái)讀取文件
            String s = null;          
            while((s = br.readLine())!=null){//使用readLine方法嘱么,一次讀一行              
                status=status+1;
                //判斷是否包含| ntp-monlist:                           
                if(status==List.get(status2)) {
                    status2=status2+1;
                    //從第21行開(kāi)始狮含,截取字符串,即ip地址
                    resultList.add(s.substring(21));
                }                
            }
            br.close();    
        }catch(Exception e){
            e.printStackTrace();
        }
        return resultList;
    }   
  • 4.3曼振、將結(jié)果輸出到txt中几迄。
  /**
     * 將文件寫入到txt中,生成一個(gè)result2.txt文件
     * @param file 想要讀取的文件對(duì)象
     * @param content 需要寫入的內(nèi)容
     * @return 生成一個(gè)文件
     */
    public static void writeMsgTxt(File file,String content) throws IOException{                
        //如果文件不存在,就動(dòng)態(tài)創(chuàng)建文件  
        if(!file.exists()){  
            file.createNewFile();  
        }  
        FileWriter fw=null;  
        try {  
            //設(shè)置為:True,表示寫入的時(shí)候追加數(shù)據(jù)  
            fw=new FileWriter(file, true);  
            //回車并換行  
            fw.write(content+"\r\n");  
        } catch (IOException e) {  
            e.printStackTrace();  
        }finally{  
            if(fw!=null){  
                fw.close();  
            }  
        }  
  
    }  

五冰评、源碼

該小工具只是一個(gè)main文件映胁,只是將txt_fetch運(yùn)行起來(lái)。
另外甲雅,如何將main函數(shù)打包成jar可執(zhí)行的文件解孙,百度即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末弛姜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子妖枚,更是在濱河造成了極大的恐慌廷臼,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绝页,死亡現(xiàn)場(chǎng)離奇詭異荠商,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)续誉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門莱没,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人酷鸦,你說(shuō)我怎么就攤上這事饰躲∑右耄” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵属铁,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我躬翁,道長(zhǎng)焦蘑,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任盒发,我火速辦了婚禮例嘱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宁舰。我一直安慰自己拼卵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布蛮艰。 她就那樣靜靜地躺著腋腮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪壤蚜。 梳的紋絲不亂的頭發(fā)上即寡,一...
    開(kāi)封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音袜刷,去河邊找鬼聪富。 笑死,一個(gè)胖子當(dāng)著我的面吹牛著蟹,可吹牛的內(nèi)容都是我干的墩蔓。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼萧豆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼奸披!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起炕横,我...
    開(kāi)封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤源内,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后份殿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膜钓,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年卿嘲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颂斜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拾枣,死狀恐怖沃疮,靈堂內(nèi)的尸體忽然破棺而出盒让,到底是詐尸還是另有隱情,我是刑警寧澤司蔬,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布邑茄,位于F島的核電站,受9級(jí)特大地震影響俊啼,放射性物質(zhì)發(fā)生泄漏肺缕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一授帕、第九天 我趴在偏房一處隱蔽的房頂上張望同木。 院中可真熱鬧,春花似錦跛十、人聲如沸彤路。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)洲尊。三九已至,卻和暖如春屏轰,著一層夾襖步出監(jiān)牢的瞬間颊郎,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工霎苗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留姆吭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓唁盏,卻偏偏與公主長(zhǎng)得像内狸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子厘擂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法昆淡,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法刽严,繼承相關(guān)的語(yǔ)法昂灵,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 31,581評(píng)論 18 399
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理舞萄,服務(wù)發(fā)現(xiàn)眨补,斷路器,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,790評(píng)論 0 11
  • 中年危機(jī)倒脓,也稱“灰色中年”撑螺,心理學(xué)的一個(gè)概念。一般高發(fā)在35~45歲崎弃,在40~65歲之間的男性身上甘晤,還被稱為“男人...
    D018李靜閱讀 139評(píng)論 2 4
  • 這期的作業(yè)就是請(qǐng)人吃大餐线婚,很感謝老師21天的教導(dǎo)遏弱,所以決定帶老師吃我最喜歡的東西。 對(duì)于手殘的我來(lái)說(shuō)塞弊,還是別自己做...
    yuyuyuy閱讀 270評(píng)論 4 2