Добавить данные в тот же текстовый файл, используя Java - PullRequest
0 голосов
/ 08 апреля 2010
   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 записей в таблицезапись в таблице

"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 Ответ

2 голосов
/ 08 апреля 2010
new FileOutputStream(f,true);

Вы уже установили флаг добавления (true) (второй аргумент), поэтому сделайте то же самое, что вы сделали с предыдущим набором результатов.

См .: http://java.sun.com/javase/6/docs/api/java/io/FileOutputStream.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...