我有一個簡單的方法,它讀取文件,根據條件修改一些行,然後將修改後的字符串寫回同一個文件。大綱如下:番石榴的`文件#寫入`不寫最後一個空行?
import com.google.common.base.Joiner;
import com.google.common.io.Files;
import static java.nio.charset.Charset.defaultCharset;
static final DIR = ;
String enforceVerbTag(String inputfilename) {
String predictedTags = Files.toString(new File(DIR, inputfilename),
defaultCharset());
String[] lines = predictedTags.split("\\r?\\n");
List<String> modifiedLines = new ArrayList<>();
for (String line : lines) {
String[] fields = line.split("\\t");
if (mycondition)
fields[1] = "VB";
String modifiedLine = Joiner.on('\t').join(fields);
modifiedLines.add(modifiedLine);
}
modifiedLines.add("");
Files.write(Joiner.on('\n').join(modifiedLines),
new File(DIR, inputfilename),
defaultCharset());
}
輸入文件有一個空的最後一行,我希望輸出文件保留。但是,儘管modifiedLines.add("")
然後加入\n
,輸出文件沒有最後一個空行。據我所知,番石榴的Files#write
不做任何修剪,那麼爲什麼會發生這種情況呢?
我知道還有很多其他寫作方式最後一個空行。但我想知道這個方法出了什麼問題。
爲什麼downvote?我的問題對某些人來說可能看起來很愚蠢,但我相信很多人都可以從(i)我的錯誤,更重要的是,(ii)@maaartinus給出的回答/解釋中受益。 – 2014-09-27 02:06:52