簡體   English   中英

讀寫文件-Java空白

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM