Прочитать N строк из файла и сохранить его в новом файле - PullRequest
0 голосов
/ 24 января 2019

Как заставить, например, прочитать 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 ]

0 голосов
/ 24 января 2019

В предположении, что ваш код работает правильно:

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 возвратит ноль и прервет цикл.В противном случае, когда он читает n строк, он снова прерывает цикл благодаря второму оператору в цикле while.

0 голосов
/ 24 января 2019
 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()));
 }
0 голосов
/ 24 января 2019

Просто добавьте при проверке размера listOfData:

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