2015-06-01 3 views
-1

Можно ли удалить пробелы в String в текстовом файле на Java? Я пробовал свой подход, но не работает.White Spaces Java Text File

public static void main(String[] args) throws IOException { 
    File f = new File("ejer2.txt"); 
    BufferedReader br = new BufferedReader(new FileReader(f)); 
    String linea = br.readLine(); 
    linea.replaceAll("\\s", ""); 
    while (linea != null) { 
     System.out.println(linea); 
     linea = br.readLine(); 
    } 
    br.close(); 
} 

Единственный способ, которым я могу получить белые пробелы из String когда я напечатать строку в цикле While с помощью метода replaceAll в String классе, но им пытаются вывести их из String в File, и я не уверен, что это возможно.

+0

Строки неизменны. – Pshemo

+0

@Pshemo Я сомневаюсь, что это проблема. Я думаю, он пытается изменить фактический текстовый файл, поскольку он не похож на то, что его код пытается что-либо сделать со значением, которое он читает. – Aify

+0

@Aify Ну, 'linea.replaceAll (" \\ s "," ");' не будет работать, потому что строки неизменяемы ('replaceAll' не может влиять на исходную строку, но вместо этого возвращает измененную). Также я не опубликовал его как ответ, потому что, как вы заметили, это была не единственная проблема. – Pshemo

ответ

0

Если вы хотите фактически заменить пробелы в файле, вам нужно записать в файл, а не просто читать его.

Вам нужно будет добавить линию linea.replaceAll внутри цикла while.

Вам также нужно будет сохранить все эти строки - я предлагаю использовать Stringbuilder и добавлять все, что вы читаете к строителю (после запуска replaceAll).

Вам также потребуется написать окончательный текст в текстовый файл. Я предлагаю использовать PrintStream.

например: PrintStream out = new PrintStream(new FileOutputStream("finalFile.txt"));

затем out.print(yourStringBuilder.toString())

+0

Спасибо большое! :) очень полезно – Ricki

2

Try с этим:

linea = linea.replaceAll("\\s+","") 

EDIT: Это происходит потому, что вы не сохранили значение вашей новой строки в вашей переменной Linea. Вы должны это сделать.

+0

IM, получающий правильный вывод с консоли, но у моего оригинального txt все еще есть белые пробелы. Это моя проблема, можно ли его изменить? Из java – Ricki

+0

Затем вам нужно напечатать его снова в текстовом файле. С PrinterWriter вы создадите свое буферное соединение следующим образом: 'PrintWriter out = new PrintWriter (" file.txt ");' и тогда вам придется печатать на файле, делая это: 'out.println (linea);' Обратите внимание, что Я помещал 'ln' после' print' для печати в следующей строке каждый раз, когда вы его используете. –