Разделение файла и запись в несколько файлов - PullRequest
0 голосов
/ 23 сентября 2018

Не могли бы вы, пожалуйста, и помогите мне в этом.Подумайте о следующем, и это в одном текстовом файле, скажем chines.txt

line no:1(AP9000)
2<CAT-DOG FILE>
3<DATA>
4<DATE=19NOV14>
5GOOG2402l 19NOV14 05:00 2.0
6APL2402h  19NOV14 05:00 6.0
7IBM2401w  19NOV14 05:00 586.0
8<END>
Line no: 9 (NNNN)
Line number:10    
11(AP9000)
12<CAT-DOG FILE>
13<DATA>
14<DATE=19NOV14>
15GOOG2402l 19NOV14 05:00 2.0
16APL2402h  19NOV14 05:00 6.0
17IBM2401w  19NOV14 05:00 586.0
18<END>
19(NNNN)

Как разделить один файл на два.значение от (AP900) до (NNNN) от строки с 1 по 9 переходит к one.txt, а с (AP900) до (NNNN) с строки с 11 по 19 переходит к two.txt.Номера строк приведены, например, от 1 до 19.

Как разделить на два файла: Java 8 или Apache Camel?

Java 8 Код для чтения этого файла

try {

       List<String> stringList =Files.lines(Paths.get("chines.txt"))
                     .collect(Collectors.toList());
                stringList.forEach(x -> System.out.println(x));
    }catch (Exception e){
        System.out.println("Could not found file");
        }

1 Ответ

0 голосов
/ 23 сентября 2018

Ваше описание неясно, и некоторые требования кажутся странными (зачем вам создавать файлы типа one.txt, а не 1.txt)?Но это всего лишь упражнение с маленьким пальцем.Может быть, это может помочь?

// Iterator<String> fileNames = Arrays.asList("one.txt", "two.txt", "three.txt", "four.txt", "five.txt", "six.txt", "seven.txt").iterator();
int i = 1;
Pattern start = Pattern.compile("\\(AP9000\\)");
Pattern end = Pattern.compile("\\(NNNN\\)");
boolean reading = false;
FileOutputStream fos = null;
Iterator<String> lines = Files.lines(Paths.get("c:/d/test.txt")).iterator();
while (lines.hasNext() /* && fileNames.hasNext() */) {
    String line = lines.next();
    Matcher startMatcher = start.matcher(line);
    if (startMatcher.find()) {
        reading = true;
        fos = new FileOutputStream(String.valueOf(i++) + ".txt"/*fileNames.next()*/);
    }
    if (reading) {
        fos.write(line.getBytes(StandardCharsets.UTF_8));
        fos.write('\n');
    }
    Matcher endMatcher = end.matcher(line);
    if (endMatcher.find()) {
        if (fos != null) {
            fos.close();
        }
        reading = false;
    }
}
if (fos != null) {
    fos.close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...