有一个文本文件,其中为竖线符分隔的数据:如 aa|bb 现在想写一个程序将其写入一个文件test.txt,文件格式为insert into table values('aa','bb'),我建了一个输入流读文件,但不知道如何将修改好的串写到输出流,大家给出出主意。谢谢。

解决方案 »

  1.   

    一个简单的方法:   public static void exportToFile(List<Data> dataList, String filePath) throws IOException {
            FileWriter out = new FileWriter(filePath);
            for(Data data:dataList){
                out.write(data.toString()+"\n");
            }
            out.flush();
            out.close();
        }
    Data如下:public class Data{
        private String data1;
        private String data2;    public Data(String data1,String data2){
            this.data1=data1;
            this.data2=data2;
        }    public String getData1() {
            return data1;
        }    public void setData1(String data1) {
            this.data1 = data1;
        }    public String getData2() {
            return data2;
        }    public void setData2(String data2) {
            this.data2 = data2;
        }    @Override
        public String toString(){
            return "insert into table values('"+data1+"','"+data2+"'),";
        }
    }
      

  2.   

    RandomAccessFile aaa = new RandomAccessFile("文件路径", "rw");
      aaa.seek(aaa.length());
      String a="insert into table values('aa','bb')";
      aaa.write(a.getBytes());这样可以么?
      

  3.   

    FileWriter writer = new FileWriter("test.txt");
    writer....
      

  4.   

    简单写了一个,就不测试了。应该可行的。final String TableName = "table";
    File srcFile = new File("srcData.txt");
    File desFile = new File("sql.txt");
    BufferedReader reader = new BufferedReader(new FileReader(srcFile));
    BufferedWriter writer = new BufferedWriter(new FileWriter(desFile));
    String line = null;
    while((line=reader.readLine())!=null){
        String datas [] = line.split("\\|");
        writer.write("insert into ");
        writer.write(TableName);
        writer.write(" values(");
        for(int i=0;i<datas.length;i++){
            if(i>0)writer.write(",");
            writer.write("'");writer.write(datas[i]);writer.write("'");
        }
        writer.write(")");writer.newLine();
        writer.flush();
    }
    reader.close();
    writer.close();
      

  5.   

    4楼的基础上改写了一下,添加了final关闭流,insert语句之间加分号表示结束,stringbuffer比string提高效率。public class d1230 { public static void main(String[] args) throws IOException  {
    final String TableName = "table";
    File srcFile = new File("d:/srcData.txt");
    File desFile = new File("d:/sql.txt");
    StringBuffer sqlstr =new StringBuffer("");
    String line=null;
    BufferedReader reader=null;
    BufferedWriter writer=null;
    try {
     reader = new BufferedReader(new FileReader(srcFile));
     writer = new BufferedWriter(new FileWriter(desFile));
    while ((line = reader.readLine()) != null) {
    String datas[] = line.split("\\|");
    sqlstr.append("insert into ");
    sqlstr.append(TableName);
    sqlstr.append(" values(");
    for (int i = 0; i < datas.length; i++) {
    if (i > 0){
    sqlstr.append(",");
    }
    sqlstr.append("'");
    sqlstr.append(datas[i]);
    sqlstr.append("'");
    }
    sqlstr.append(");");
    writer.write(sqlstr.toString());
    sqlstr.delete(0, sqlstr.length());
    writer.newLine();
    writer.flush();
    }
    } catch (Exception e) {
    e.printStackTrace();
    }finally{
    reader.close();
    writer.close();
    }
    }}
      

  6.   

    就建一个文件格式的输出流,通过一个类似Stringbuffer的东西做中介,把输入流的东西写进去就行吧!大概楼主的意思是还要做格式上的变换是吧?这样的话,我觉得中间是不是可以用正则表达式来处理一下呢
      

  7.   

    需要注意一点:
    BufferedWriter本身就有缓冲区,所以,没必要使用StringBuffer类对象进行字符串的缓冲处理,
    直接将需要的内容写入BufferedWriter,最后flush一下即可。
    可以少用一个类,呵呵。