2013-07-11 3 views
0
public static void main(String[] args) { 
    ArrayList<String> studentTokens = new ArrayList<String>(); 
    ArrayList<String> studentIds = new ArrayList<String>(); 
    try { 
     // Open the file that is the first 
     // command line parameter 
     FileInputStream fstream = new FileInputStream(new File("file1.txt")); 
     BufferedReader br = new BufferedReader(new InputStreamReader(fstream, "UTF8")); 

     String strLine; 
     // Read File Line By Line 
     while ((strLine = br.readLine()) != null) { 
      strLine = strLine.trim(); 

      if ((strLine.length()!=0) && (!strLine.contains("#"))) { 
       String[] students = strLine.split("\\s+"); 
       studentTokens.add(students[TOKEN_COLUMN]); 
       studentIds.add(students[STUDENT_ID_COLUMN]); 
      } 

     } 





     for (int i=0; i<studentIds.size();i++) { 
      File file = new File("query.txt");              // The path of the textfile that will be converted to csv for upload 
      BufferedReader reader = new BufferedReader(new FileReader(file)); 
      String line = "", oldtext = ""; 
      while ((line = reader.readLine()) != null) {                 
       oldtext += line + "\r\n"; 
      } 
      reader.close(); 
      String newtext = oldtext.replace("sanid", studentIds.get(i)).replace("salabel",studentTokens.get(i));           // Here the name "sanket" will be replaced by the current time stamp 
      FileWriter writer = new FileWriter("final.txt",true); 
      writer.write(newtext); 
      writer.close(); 
     } 


     fstream.close(); 
     br.close(); 
     System.out.println("Done!!"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     System.err.println("Error: " + e.getMessage()); 
    } 
} 

Приведенный выше код моего читает данные из текстового файла, а запрос - это файл с запросом, в котором 2 места «санид» и «салабель» заменяются содержимым string array и записывает другой файл final. Но когда я запускаю код, в финале нет запросов. но при отладке это показывает, что все значения заменены должным образом.Написание нескольких запросов из тестового файла

+0

Так что 'System.out.println (newtext)' печатает правильные данные, но 'final.txt' не содержит то же самое? – assylias

+0

использование stringbuffer добавление метод –

ответ

0

но при отладке он показывает, что все значения заменяются правильно

Если значения находятся в замене, когда отлаживается код, но они отсутствуют в файле, я бы предположил, что вы очищаете выходной поток. Вы закрываете FileWriter без звонка flush(). Метод close() делегирует свой вызов базовому StreamEncoder, который также не очищает поток.

public void close() throws IOException { 
se.close(); 
} 

Попробуйте

writer.flush(); 
writer.close(); 

Это должно сделать это.

Смежные вопросы