使用java将数据附加到同一文本文件

时间:2010-04-08 10:54:53

标签: java

   SimpleDateFormat formatter = new SimpleDateFormat("ddMMyyyy_HHmmSS");
   String strCurrDate = formatter.format(new java.util.Date());
   String strfileNm = "Customer_" + strCurrDate + ".txt";
   String strFileGenLoc = strFileLocation + "/" + strfileNm;
   String Query1="select '0'||to_char(sysdate,'YYYYMMDD')||'123456789' class_code from   dual";
   String Query2="select '0'||to_char(sysdate,'YYYYMMDD')||'123456789' class_code from   dual";
   String Query3="select param from dual"; 
  try {
  Statement stmt = null;
  ResultSet rs = null;
  Statement stmt1 = null;
  ResultSet rs1 = null;

     stmt = conn.createStatement();
     stmt1 = conn.createStatement();
     stmt2 = conn.createStatement();
     rs = stmt.executeQuery(Query1);
     rs1 = stmt1.executeQuery(Query2);
     rs2 = stmt2.executeQuery(Query3);

 File f = new File(strFileGenLoc);
 OutputStream os = (OutputStream)new FileOutputStream(f,true);
 String encoding = "UTF8";
 OutputStreamWriter osw = new OutputStreamWriter(os, encoding);
 BufferedWriter bw = new BufferedWriter(osw);

 while (rs.next() ) {

     bw.write(rs.getString(1)==null? "":rs.getString(1));
     bw.write("  ");


 }
 bw.flush();
 bw.close();
 } catch (Exception e) {
 System.out.println(
     "Exception occured while getting resultset by the query");
 e.printStackTrace();
} finally {
 try {
     if (conn != null) {
         System.out.println("Closing the connection" + conn);
         conn.close();
     }
 } catch (SQLException e) {
     System.out.println(
         "Exception occured while closing the connection");
     e.printStackTrace();
   }
 }
     return objArrayListValue;
}

    The above code is working fine. it writes the content of "rs" resultset data in  text file

   Now what i want is ,i need to append the 


   the content in "rs2" resultset to the "same text file"(ie . i need to append "rs2"  content with "rs" content in the same text file)..

   ------------------edit part----------------

     stmt = conn.createStatement();
     stmt1 = conn.createStatement();
     stmt2 = conn.createStatement();
     rs = stmt.executeQuery(Query1);
     rs1 = stmt1.executeQuery(Query2);
     rs2 = stmt2.executeQuery(Query3);


     while ( rs.next() ) {

     while(rs1.next()){

          while(rs2.next()){

     bw.write(rs.getString(1)==null? "":rs.getString(1));
         bw.write("\t");
     bw.write(rs1.getString(1)==null? "":rs1.getString(1));
     bw.write("\t");
     bw.write(rs2.getString(1)==null? "":rs2.getString(1));
     bw.write("\t");

     bw.newLine();

          }
     }
 }

以上代码正常工作。 我的问题是

  1. “rs”结果集包含表中的一条记录
  2. “rs1”结果集包含表中的5条记录
  3. “rs2”结果集包含表中的5条记录
  4. “rs”数据正在递归。

    在写入同一文本文件时,我得到的输出

    1   2    3
    1   12   21
    1   23   25
    1   10   5
    1   8    54
    

    但我需要输出如下

    1   2    3
       12   21
       23   25
       10   5
        8    54
    

    我需要在代码中更改哪些内容..请提供建议

        -----------------edit part1------------------
    
    
          Expected Result is 
    
                1   2    3
                1   12   21
                1   23   25
                1   10   5
                1   8    54
    
       but output i got like
    
                1   2    3
                12   21
                23   25
                10   5
                 8    54
    

1 个答案:

答案 0 :(得分:2)

new FileOutputStream(f,true);

您已将append标志设置为true(第二个参数),因此请执行与之前结果集相同的操作。

请参阅:http://java.sun.com/javase/6/docs/api/java/io/FileOutputStream.html