为了账号安全,请及时绑定邮箱和手机立即绑定

从文件中读取 N 行并将其保存到新文件中

从文件中读取 N 行并将其保存到新文件中

动漫人物 2022-05-21 20:55:02
例如,如何读取 20 行readFile或 n 行并将其保存到另一个文件(writeFile)?public class Test_read_file {  public static List<String> readFile() throws IOException {    try(BufferedReader br = new BufferedReader(new FileReader("C:\\\\\\\\Users\\\\\\\\Admin\\\\\\\\Desktop\\\\\\\\Work Files\\\\\\\\314-WO0000001133814\\\\\\\\Cards\\\\\\\\MBD10760_182.out"))){        List<String> listOfData = new ArrayList<>();        String d;        while((d = br.readLine()) != null){            listOfData.add(d);        }        return listOfData;    }}public static void writeFile(List<String> listOfData) throws IOException{    try(BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\\\\\\\Users\\\\\\\\Admin\\\\\\\\Desktop\\\\\\\\Work Files\\\\\\\\314-WO0000001133814\\\\\\\\Cards\\\\\\\\MBD10760_187.out"))){        for(String str: listOfData){            bw.write(str);            bw.newLine();        }    }}public static void main(String[] args) throws IOException {    List<String> data = readFile();    writeFile(data);}}
查看完整描述

3 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

假设您的代码工作正常:


public static List<String> readFile(int n) throws IOException {

    try(BufferedReader br = new BufferedReader(new 

FileReader("C:\\\\\\\\Users\\\\\\\\Admin\\\\\\\\Desktop\\\\\\\\Work Files\\\\\\\\314- 

WO0000001133814\\\\\\\\Cards\\\\\\\\MBD10760_182.out"))){

        List<String> listOfData = new ArrayList<>();

        String d;

        while((d = br.readLine()) != null && n>0){

            listOfData.add(d);

            n--;

        }

        return listOfData;

    }

只是你必须告诉循环它应该读多少行。如果文件少于 n 行,则 while 循环的第一条语句将返回 null 并中断循环。否则,当它读取 n 行时,由于 while 循环中的第二条语句,它将再次中断循环


查看完整回答
反对 回复 2022-05-21
?
长风秋雁

TA贡献1757条经验 获得超7个赞

只需在检查 listOfData 大小时添加:


 while( ((d = br.readLine()) != null) && listOfData.size()<20 ) {

            listOfData.add(d);

}


查看完整回答
反对 回复 2022-05-21
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

 public static void main(String[] args) throws IOException {

     Path pathFrom = Paths.get("C:\\Users\\Admin\\Desktop\\Work Files\\314-WO0000001133814\\Cards\\MBD10760_182.out\"");

     Path pathTo = Paths.get("C:\\Users\\Admin\\Desktop\\Work Files\\314-WO0000001133814\\Cards\\MBD10760_187.out\"");

     Files.write(pathTo, Files.lines(pathFrom).limit(20).collect(Collectors.toList()));

 }


查看完整回答
反对 回复 2022-05-21
  • 3 回答
  • 0 关注
  • 98 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信