2013-12-10 4 views
-2

У меня есть файл журнала (log.txt), и мне нужно поместить запятую между каждой строкой (всякий раз, когда есть пробел). Это нужно сделать для каждой строки/строки файла журнала. Чтобы проанализировать текст, который я попытался использовать Stringbuilder (может быть, неправильно), и фактический код не имеет никакого эффекта (возможно, потому, что строка печати системы находится внутри блока while). Помогите оценить! Это то, что нужно для файла журнала. В основном размещение Comma всякий раз, когда есть Blank.Разбор каждой строки текста строки

Входной"Hello" this is 1 sentence blablabla

Выход"Hello" , this , is , 1 , sentence , blablabla

UPDATE РЕШИТЬ!

public class changeFile { 
public static void main(String[] args) throws IOException{ 

File f=new File("C:/downloads/log.txt"); 
FileReader in = new FileReader(f); 
BufferedReader br = new BufferedReader(in); 
String line; 
StringBuilder builder = new StringBuilder(); 
String delim = ""; 

try { 
while ((line = br.readLine()) != null) { 
delim =","; 
builder.append(delim).append(line); 
System.out.println(line); 
}    
}catch (IOException e) { 
e.printStackTrace(); 
} 
br.close(); 
in.close(); 
} 
} 
+1

Define 'не работает.' Что происходит? –

+0

StringBuilder может только * построить * строку, а не анализировать ее. Вы хотите запятые между целыми линиями или между словами? Просьба привести пример того, что вы ожидаете от вывода. Кроме того, очевидно, что ваш пример кода не работает ... он недействителен Java. – hendrik

+0

Запятые должны быть между каждым словом, поэтому из исходного текста (в данном случае одной строки), как Hello 5 Cat 18 Мне нужен Hello, 5, Cat, 18 – user3086819

ответ

0

Необходимо ввести этот код в main() метод. Например:

public class ChangeFile { 
    public static void main(String[] args) throws IOException { 
     File f = new File("C:/downloads/log.txt"); 
     FileReader in = new FileReader(f); 
     BufferedReader br = new BufferedReader(in); 
     String line; 
     StringBuilder builder = new StringBuilder(); 
     String delim = ","; 

     while ((line = br.readLine()) != null) { 
      builder.append(delim).append(line); 

     } 
     System.out.println(builder); 
     br.close(); 
     in.close(); 
    } 
} 
+0

Я вызываю функцию на основном корпусе, поэтому на самом деле могу прочитать только исходный файл (без запятых между словами) – user3086819

+0

@ user3086819 Я не понимаю, что вы пытаетесь сказать? Мой отредактированный пост должен быть рабочим. –

+0

Показанный пример получает только запятую в начале каждой строки. – user3086819

0

Код не будет работать, потому что нет метода: ни main(), ни что-либо еще. Поместите код в main(). Также дайте ожидаемый результат с набором входных данных.

1

Попробуйте эту измененную версию своего собственного кода.

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

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileReader; 
import java.io.FileWriter; 

public class Test { 

public static void main(String[] args) throws Exception { 

    File f=new File("C:/downloads/log.txt"); 
    FileReader in = new FileReader(f); 
    BufferedReader br = new BufferedReader(in); 
    String line; 
    StringBuilder builder = new StringBuilder(); 
    String delim = ""; 

    while ((line = br.readLine()) != null) { 
     delim =","; 
     builder.append(line); 
     builder.append(delim); 
     builder.append(System.getProperty("line.separator")); 
    } 

    br.close(); 

    BufferedWriter bw = new BufferedWriter 
         (new FileWriter("C:/downloads/log_modified.txt")); 
    bw.write(builder.toString()); 
    bw.close(); 

} 

} 
+0

Выглядит хорошо, но при запуске выходной файл остается как исходный. В любом случае исходный файл содержит строки и целые числа. Если исходный текст будет выглядеть так: «Привет, это 1 предложение». Результат должен быть «Hello, this, is, 1, sentence» – user3086819

+0

Я думаю, что внутри цикла While я должен зацикливать все отдельные строки, а затем добавить Разделитель запятой после каждого? – user3086819

+0

^Вы пробовали решение, которое я предоставил? – Makky

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