[英]Reading & writing Files - Java empty spaces
我想從文件中讀取並寫入文件。 輸入文件如下
<ORLANDO> <0%>
As I remember, Adam, it was upon this fashion bequeathed me by will but poor a thousand crowns, and, as thou sayest,
<ORLANDO>
"A s I r e m e m b e r A d a m i t w a s u p o n t h i s f a s h i o n b e q u e a t h e d m e b y w i l l b u t p o o r a t h o u s a n d c r o w n s a n d a s t h o u s a y e s t c h a r g e d m y b r o t h e r o n ..."
我編寫了一個Java程序來刪除帶有標簽的行,並用空格替換所有標點符號。 但是,每個寫出的字母在行之間和行之間都有一個空格,其中存在許多空白行。 如何刪除它們? 。 請幫忙。
String line=null;
try {
BufferedReader br=new BufferedReader( new FileReader("filename"));
PrintWriter writer = new PrintWriter(new FileWriter("filename"));
try {
while((line=br.readLine())!=null)
{
if(!line.contains("<"))
{
line=(line.replaceAll("\\p{Punct}",""));
writer.println(line);
writer.flush();
}
}
}
默認情況下,使用PrintWriter打開文件時,文件將被截斷。 您可以將其設置為追加,但是無論哪種方式都無法重寫以此方式讀取的文件。
相反,您應該創建一個新文件並將其寫入。 完成后,您可以刪除原件並重命名副本(或者如果副本完全相同,則刪除副本)
但是,每個寫出的字母在行之間和行之間都有一個空格,其中存在許多空白行。
發生這種情況的原因是您編寫了UTF-16,但將其讀取為ASCII或UTF-8。 避免這種情況的方法是不使用UTF-16(這不是默認值)。
try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("filename"), StandardCharsets.UTF_8));
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("filename.tmp"), StandardCharsets.UTF_8))) {
for(String line; (line = br.readLine())!=null;) {
pw.println(line.replaceAll("<[^>]+>", ""));
}
}
您是否以正確的編碼打開書面文件。 看起來您編寫了UTF-8,並使用ASCII或任何ISO-8859編碼將其打開。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.