当前位置:编程学习 > JAVA >>

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 {

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,