簡體   English   中英

FileWriter 只顯示最后一行

[英]FileWriter only displays the last line

當我使用System.out.println(data)顯示變量數據時,它會顯示“filename.txt”的內容(所有行)。 但是,當我使用myWriter.write(data)時,它只寫入初始文件的最后一行。 我的任務是讀取一個文件(在本例中為filename.txt )並將其內容復制到一個新文件( new.txt )中。

package javaapplication13;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.io.PrintWriter;
import java.io.FileWriter;
import java.io.IOException;


public class readFile {
    public static String data;
     
    public static void main(String[] args) throws IOException{
        try{
            File myObj = new File("C:\\Users\\Admin\\Documents\\NetBeansProjects\\JavaApplication13\\src\\javaapplication13\\filename.txt");
            try (Scanner myReader = new Scanner(myObj)) { 
                do{ 
                     data = myReader.nextLine();   
                }
                while (myReader.hasNextLine());
 
                  PrintWriter out = new PrintWriter("C:\\Users\\Admin\\Documents\\NetBeansProjects\\JavaApplication13\\src\\javaapplication13\\new.txt");
                  FileWriter myWriter = new FileWriter("C:\\Users\\Admin\\Documents\\NetBeansProjects\\JavaApplication13\\src\\javaapplication13\\new.txt");
                  myWriter.write(data);
                   
                  myWriter.close();
                  out.close();
                  myReader.close();
  
            } 
        } 
        catch (FileNotFoundException e){
            System.out.println("An error occurred.");
        }
    }
}

循環的每次迭代都會打開一個新的寫入器,然后寫入它,從而覆蓋文件。 相反,您應該在循環之前打開編寫器一次,並在完成編寫后關閉它。 例如:

try (FileWriter myWriter = new FileWriter("C:\\Users\\Admin\\Documents\\NetBeansProjects\\JavaApplication13\\src\\javaapplication13\\new.txt")) {
    while (myReader.hasNextLine());
        myWriter.write(myReader.nextLine());
    } 
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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