日期:2014-05-20  浏览次数:20875 次

读取和修改JS文件,很及,在线等
我有一个D:\resin3\deploy\yncm\courseware\1231\menu.js的文件,我要把里面course_name = "123123";的值读出来.替换一个新的值在写进去,请问各位大假,怎么做这个程序?很及.

------解决方案--------------------
IO读写文件,没什么其他好办法。
------解决方案--------------------
这个也太麻烦了吧。做什么系统会要用到这样的东东。
读取文件到内存中,然后用String.replace把它给换了。
------解决方案--------------------
Java code

/**
 * 
 */
package com.ecc.test1016;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;

/**
 * @author Liu Shijie
 * 
 */
public class ReplaceString {

    String path = "C:\\j2sdk1.4.2\\README.txt";
    File file;
    File file_bak;
    FileReader fr;
    BufferedReader br;
    FileOutputStream os;

    /**
     * 
     */
    public ReplaceString() {
        file = new File(path);
        file_bak = new File(file.getPath()+file.getName()+".bak");
    }

    public void doReplace() {
        if (file.exists()) {
            try {
                fr = new FileReader(file);
                br = new BufferedReader(fr);
                os = new FileOutputStream(file_bak);
                String line = "";
                String line_bak = "";
                while ((line = br.readLine()) != null) {
                    if(line.indexOf("course_name =")!=-1){
                        System.out.println(line);
                        line = line.replaceAll("course_name = \"123123\"",
                                "course_name = \"555555\"");
                        System.out.println(line_bak);
                        
                    }
                    os.write(line.getBytes(), 0, line.getBytes().length);
                    os.write("\n".getBytes());
                }
                fr.close();
                br.close();
                os.close();
                file.delete();
                file_bak.renameTo(new File(path));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new ReplaceString().doReplace();
    }

}

------解决方案--------------------
Java code

import java.io.*;

/**
 * 指定文件内容的替换,输出到新文件
 * @author 张斌(小神)
 *
 */
public class ReplaceString_File {
    
    /**
     * 
     * @param pathName : 读取文件路径
     * @param newPathName : 输出文件路径
     * @param course : 要修改的字串
     * @param value : 新字串
     * @throws IOException
     */
    public void replaceString(String pathName, String newPathName, String course, String value) throws IOException {
        File file = new File(pathName);
        File file_output = new File(newPathName);
        if (file.exists()) {
            BufferedReader br = new BufferedReader(new FileReader(file));
            BufferedWriter bw = new BufferedWriter(new FileWriter(newPathName));
            String context;
            while ((context = br.readLine()) != null) {
                context.replace(course, value);
                bw.write(context);
                bw.newLine();
                //System.out.println(context);
            }
            bw.flush();
            br.close();
            bw.close();
        }
    }
    
    public static void main(String[] args) {
        ReplaceString_File rsf = new ReplaceString_File();
        
        try {
            rsf.replaceString("F:\\321.txt", "F:\\123.txt", "def=456", "def=654");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}