2014-08-29 4 views
0

У меня есть .txt-файл. Я хочу, как только строка начинается с «>», тогда появляется первый символ пули «•», который должен быть записан как «>> •». Я использую:BufferedReader и BufferedWritter

br = new BufferedReader(new FileReader("C:\\Users\\User\\Desktop\\text.txt")); 
bw = new BufferedWriter(new FileWriter("C:\\Users\\User\\Desktop\\text.txt")); 

     while ((current_line = br.readLine()) != null) { 
      if (current_line.length() > 1 && (current_line.charAt(0) == '>' || current_line.charAt(1) != '>')) { 
       found = true; 
      } 
      if ((found) && (current_line.length() > 1) && current_line.charAt(0) == '•') { 
       bw.write(">>"); 
       found = false; 
      } 
     } 
     br.close(); 
     bw.close(); 

Но это дает в результате пустой файл .txt? Что я делаю неправильно? Большое спасибо

+0

Какая кодировка используется для входного файла, выходного файла и исходного кода? – hexafraction

+3

Вы читаете и записываете из/в ** тот же файл **. –

+0

- это точка в той же строке? хотите ли вы написать и другие строки? – Braj

ответ

1

Где bw.write(line); bw.write("\r\n");?

try (br = new BufferedReader(new FileReader("C:\\Users\User\Desktop\\text.txt"); 
    bw = new BufferedWriter(new FileWriter("C:\\Users\\User\Desktop\\text-2.txt")) { 

    String current_line; 
    while ((current_line = br.readLine()) != null) { 
     if (current_line.length() > 1 && (current_line.charAt(0) == '>' || current_line.charAt(1) != '>')) { 
      found = true; 
     } 
     if (found && current_line.startsWith("•")) { 
      bw.write(">>"); 
      found = false; 
     } 
     bw.write(line); 
     bw.write("\r\n"): 
    } 
} 

К сожалению, вы не можете писать здесь.

Также обратные косые черты должны быть экранированы в строках Java.

Было бы лучше назвать found что-то наподобие tackleBullet.

+0

или закройте файл, сохраните результат, откройте и запишите снова. –

+0

Используйте 'System.lineSeparator()' (начиная с Java 7) или 'System.getProperty (« путь.сепаратор »);' (Java 6 или ранее) вместо наивного '' \ r \ n "'. –

+0

@LuiggiMendoza Извините, я нахожусь в Linux дома, и для создания текстового файла для Windows я вынужден на Linux делать именно это '' \ r \ n "'. Особенно я хотел предотвратить использование '' \ n "' ленивыми программами. Спасибо за то, что он рассказал OP, о том, как это сделать. –