<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    用動作去驅動未來

    生命在于運動,讓自己身體的每一個細胞都動起來吧.

     

    java對指定目錄下文件的讀寫

    最近因為項目的國際化的需要,需要對整個項目的100來個插件做國際化,這是一件痛苦的事情,因為純體力勞動。為了省點工作量,想著能不能寫個程序批處理了,減少點工作量,于是就有了下面的代碼。

    1.讀取指定的(.java)文件:
    public static String readFile(String path) throws IOException {
            File f = new File(path);
            StringBuffer res = new StringBuffer();
            String filePathStr = f.getPath();
            System.out.println("獲取文件的路徑:::::::"+filePathStr);
            
            FileInputStream fis = new FileInputStream(f);
            InputStreamReader isr = new InputStreamReader(fis,Charset.forName("GBK")); //以gbk編碼打開文本文件
            BufferedReader br = new BufferedReader(isr, 8192 * 8);
            
            String line = null;
            int linenum = 0;
            while((line=br.readLine())!=null) {
                linenum ++;
                res.append(line+"此處可以添加你自己的字符串處理邏輯"+"\r\n");
            }
            br.close();
            
            return res.toString();
        }
    2.讀取的文件內容信息寫到指定的(.java)文件
    public static boolean writeFile(String cont, String path) {
            try {
                File dist = new File(path);
                OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(dist),"GBK"); 
                writer.write(cont);
                writer.flush();
                writer.close();
                return true;
            } catch (IOException e) {
                e.printStackTrace();
                return false;
            }
        }
    3.查找指定目錄下所有符合條件的.java文件,并更新文件信息
        /**
         * 查找文件
         * @param f
         * @throws IOException
         */
        public static void findFile(File f) throws IOException {
            if(f.exists()) {
                if(f.isDirectory()) {
                    for(File fs:f.listFiles(ff)) {
                        findFile(fs);
                    }
                } else {
                        updateFile(f);
                }
            }
        }
        
        /**
         * 逐行讀java文件
         * @param f
         * @throws IOException
         */
        private static void updateFile(File f) throws IOException {
            String filePathStr = f.getPath();
            System.out.println("開始讀取文件的路徑:::::::"+filePathStr);
            FileInputStream fis = new FileInputStream(f);
            InputStreamReader isr = new InputStreamReader(fis,Charset.forName("GBK")); //以gbk編碼打開文本文件
            BufferedReader br = new BufferedReader(isr, 8192 * 8);
            
            String line = null;
            int linenum = 0;
            StringBuffer res = new StringBuffer();
            while((line=br.readLine())!=null) {
                String updateStr= updateStr(line);
                res.append(updateStr+"\r\n");
                
                if(!line.trim().equals(updateStr.trim())) {
                    linenum ++;
                }
            }
            br.close();
            
            //如果文件有修改,則修改后的文件,覆蓋原有文件
            if(linenum>0) {
                System.out.println("=============================");
                System.out.println("filePathStr:"+filePathStr);
                System.out.println("文件修改了:"+linenum+"處。");
                System.out.println("=============================");
                String cont = res.toString();
                ReadWriteFile.write(cont, filePathStr);
            }
        }
        
        /**
         * 驗證讀取的字符串信息
         * 和更新字符串信息
         * @param str
         */
        private static String updateStr(String str) {
            //判斷字符串是否是需要更新的字符串
            boolean isok = filterStr(str);
            int strNum = StringValidation.strNum(str, StringValidation.ch);
            if(isok || strNum == 0) {
                return str;
            } else {
                String temp = ""; 
                for(int i=1;i<=strNum/2;i++) {
                    temp += " //$NON-NLS-"+i+"$"; //需要添加的字符
                }
                str = str+temp;
            }
            return str;
        }
        
        //過濾文件類型
        private static FileFilter ff = new FileFilter() {
            public boolean accept(File pathname) {
                String path = pathname.getName().toLowerCase();
                logger.info("FileFilter path::::"+path);
                //只匹配 .java 結尾的文件
                if (pathname.isDirectory() || path.endsWith(".java")) {
                    return true;
                }
                return false;
            }
        };

        /**
         * 過濾掉不需要處理的字符串
         * @param str
         * @return
         */
        public static boolean filterStr(String str) {
            boolean isok = false;
            
            //過濾字符串
            isok = (str.indexOf("import ")>=0)
                    || (str.indexOf("package ")>=0)
                    || (str.indexOf(" class ")>=0)
                    || (str.indexOf("http://$NON-NLS")>=0)
                    || (str.indexOf("http://")==0)
                    || (str.indexOf("/*")>=0)
                    || (str.indexOf("*")>=0)
                    || (str.trim().indexOf("@")==0)
                    || (str.indexOf("\"")==-1)
                    || ("".equals(str))
                    || isCh(str);
            return isok;
        }

        /**
         * 驗證字符串是否含有中文字符
         * @param str
         * @return
         */
        public static boolean isCh(String str) {
            Pattern   pa   =   Pattern.compile("[\u4E00-\u9FA0]");
            Matcher   m   =   pa.matcher(str);
            boolean isok = m.find();
            return isok;
        }

    總結:當我們拿到一個別人給的需求,先不要急于去處理,先分析,再分析,然后做出最優的解決方案,處理好這項工作。

    posted on 2012-11-23 15:32 黑螞蟻 閱讀(1944) 評論(0)  編輯  收藏 所屬分類: JAVA 基礎

    導航

    統計

    公告

    路在腳下,此刻,出發。

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费在线观看亚洲| 国产精品亚洲片在线花蝴蝶| 久久er国产精品免费观看8| 免费在线视频一区| 在线播放免费人成视频网站| 啊v在线免费观看| yellow视频免费在线观看| 久久精品国产精品亚洲人人 | 久久精品a亚洲国产v高清不卡| 中文字幕久精品免费视频| 亚洲av之男人的天堂网站| 99精品视频在线观看免费专区| 亚洲专区在线视频| 黄页免费的网站勿入免费直接进入| 亚洲最大的成人网| 全部免费毛片在线| 美女网站在线观看视频免费的| 亚洲AV无码一区二区二三区入口| 99精品视频在线观看免费播放| 国产成人精品日本亚洲专| 国产亚洲福利一区二区免费看| 污视频网站在线观看免费| 亚洲午夜久久久久久久久电影网| 久久久久国产免费| 亚洲乱码中文字幕在线| 国产中文在线亚洲精品官网| 免费一区二区三区| 亚洲影院天堂中文av色| 国产精品亚洲产品一区二区三区| 久久久免费的精品| 亚洲中文字幕久久无码| 久久精品夜色噜噜亚洲A∨| 久久永久免费人妻精品| 亚洲日韩AV无码一区二区三区人| 亚洲国产午夜中文字幕精品黄网站| 中文字幕视频在线免费观看| 国产成人精品日本亚洲专| 综合亚洲伊人午夜网| 91在线视频免费91| a级在线免费观看| 亚洲Av无码国产一区二区 |