2016-04-13 18 views
0

私はいくつかのデータを含むテキストファイルを持っています。ファイルを1行ずつ読み込み、検索して置換したいと思います。私は私がして、ファイルの行を読んしようとしていテキストファイルの検索と置換

input 

a 
a=10 
c=_x 
b 
b=20 
d=_x 


Output 

a 
a=10 
c=a 
b 
b=20 
d=b 

を次のように最終的な出力ファイルを望ん意味、私は「_x」を見つけると、それは前々回のラインだとそれを交換したいテキストファイルでは、

私はできませんでした。行ごとにテキストファイルを読み込み、それを前の2行目に置き換える方法

+0

は、[ここで、ファイルの行を読み込み、リストにそれらを置く方法の一例である。](http://stackoverflow.com/a/5343727/1682559)私は最初、既存の中にそれを実装します'_x'を前の行に置き換えるためにいくつかのことを試してください。lあなたが欲しい。問題が発生した場合は、作成したコードを含め、** _ specific _ **の問題を記述したこの投稿を編集することができます。がんばろう。 :) –

答えて

0

あなたはこのような構造必要なラインで、あなたのテキストファイルの行を読み取るには:

Charset charset = Charset.forName("US-ASCII"); 
try (BufferedReader reader = Files.newBufferedReader(file, charset)) { 
String line = null; 
while ((line = reader.readLine()) != null) { 
    System.out.println(line); 
} 
} catch (IOException x) { 
    System.err.format("IOException: %s%n", x); 
} 

あなたの交換-ものを完了したら、あなたはこのような「新しい」ファイルを書きたい:

Charset charset = Charset.forName("US-ASCII"); 
String s = ...; 
try (BufferedWriter writer = Files.newBufferedWriter(file, charset)) { 
    writer.write(s, 0, s.length()); 
} catch (IOException x) { 
    System.err.format("IOException: %s%n", x); 
} 
0
Path path = Paths.get("test.txt"); 
Charset charset = StandardCharsets.UTF_8; 

String content = new String(Files.readAllBytes(path), charset); 
content = content.replaceAll("_", ""); 
Files.write(path, content.getBytes(charset));