читать файл построчно и хранить в базе данных - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть такой файл:

1
00:00:00,535 --> 00:00:02,462
Je suis professeur d'informatique et
d'ingéniérie informatique

2
00:00:02,462 --> 00:00:04,389
à Carnegie Mellon,

3
00:00:04,389 --> 00:00:06,318
et mes recherches se concentrent sur
l'utilisabilité de la vie privée

Файл слишком длинный, около 600 субтитров, каждый субтитр имеет свой «идентификатор» (например, 1, 2, 3 ...), его 'тайм-код »(например, 00: 00: 02,462 -> 00: 00: 04,389 ...), его« subtitle_line1 »(например,« Je suis professeur d'informatique et »...) и его subtitle_line2 (например,« d'ingéniérie »informatique "..., но не все; есть некоторые субтитры, которые имеют просто 'subtitle_line1' (например, субтитр ID = 2).

Мне нужно прочитать его и сохранить в базе данных.Для этого я создаю базу данных, схема которой выглядит следующим образом:

субтитры (id, тайм-код, subtitle_line1, subtitle_line2)

И я создаю Java-бин Subtitle.java следующим образом:

public class Subtitle {
private String subtitleId;
private String timeCode;
private String originalSubtitleLine1;
private String originalSubtitleLine2;

public String getSubtitleId() {
    return subtitleId;
}

public void setSubtitleId(String subtitleId) {
    this.subtitleId = subtitleId;
}

public String getTimeCode() {
    return timeCode;
}
public void setTimeCode(String timeCode) {
    this.timeCode = timeCode;
}
public String getOriginalSubtitleLine1() {
    return originalSubtitleLine1;
}
public void setOriginalSubtitleLine1(String originalSubtitleLine1) {
    this.originalSubtitleLine1 = originalSubtitleLine1;
}
public String getOriginalSubtitleLine2() {
    return originalSubtitleLine2;
}
public void setOriginalSubtitleLine2(String originalSubtitleLine2) {
    this.originalSubtitleLine2 = originalSubtitleLine2;
}

}

Я также создал класс SubtitleHandler.java для чтения файла и извлечения информации, например:

public class SubtitlesHandler {
private ArrayList<String> originalSubtitles = null;
private ArrayList<String> translatedSubtitles = null;

public SubtitlesHandler(String fileName) {
    originalSubtitles = new ArrayList<String>();
    translatedSubtitles = new ArrayList<String>();
    BufferedReader br;
    try {
        br = new BufferedReader(new FileReader(fileName));
        String line;
        while ((line = br.readLine()) != null) {
            originalSubtitles.add(line);
        }
        br.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public ArrayList<String> getSubtitles() {
    return originalSubtitles;
}

}

Как извлечь данные из файла для создания объектов субтитров, чтобы затем их можно было сохранитьв базе данных?Спасибо за ваши предложения.

1 Ответ

0 голосов
/ 28 ноября 2018
    Scanner scanner=new Scanner(new File("yourfile.txt"));
    Scanner grpScanner=null;
    String id="";
    String title="";
    String subtitleLine1="";
    String subtitleLine2="";
    //split into subtitle group using empty line
    scanner.useDelimiter(Pattern.compile("^\\s*$", Pattern.MULTILINE));

    //iterate subtitle group
    while(scanner.hasNext())
    {
        //store subtitle group as string
        String subgrp=scanner.next();
        //read each line in subtitle group
        grpScanner=new Scanner(subgrp);
        while(grpScanner.hasNext())
        {
            id=grpScanner.next(); //get Id
            title=grpScanner.next(); // get timecode
            subtitleLine1=grpScanner.next(); //get Subtitle_line1
            subtitleLine2=grpScanner.hasNext() ? grpScanner.next(): ""; //check for subtitle_line 2
        }
        grpScanner.close(); //close grpScanner
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...