Я делю свой файл на куски, но единственная проблема, с которой я сталкиваюсь, это
У меня есть файл .srt, но при выполнении кусков он обрезает символы, т.е. в первом файле .srt это похоже на 00: 26: 20,230 ->. в следующем файле это продолжается в следующем временном штемпеле 00: 27: 40,343.
Мне нужно проверить метку времени, чтобы завершить, а затем еще одно полное предложение субтитров. Т.е., если он вырезает временную метку субтитров или диалог в файле, этот тект должен быть добавлен к следующему файлу. Пожалуйста, предложите мне, как я могу достичь.
Я пытаюсь, как показано ниже,
String FilePath = "/Users/meh/Desktop/escapeplan.srt";
FileInputStream fin = new FileInputStream(FilePath);
System.out.println("size: " +fin.getChannel().size());
long abc = 0l;
abc = (fin.getChannel().size())/3;
System.out.println("6: " +abc);
System.out.println("abc: " +abc);
//FilePath = args[1];
File filename = new File(FilePath);
long splitFileSize = 0,bytefileSize=0;
if (filename.exists()) {
try {
//bytefileSize = Long.parseLong(args[2]);
splitFileSize = abc;
Splitme spObj = new Splitme();
spObj.split(FilePath, (long) splitFileSize);
spObj = null;
} catch (Exception e) {
e.printStackTrace();
}
} else {
System.out.println("File Not Found....");
}
public void split(String FilePath, long splitlen) {
long leninfile = 0, leng = 0;
int count = 1, data;
try {
File filename = new File(FilePath);
InputStream infile = new BufferedInputStream(new FileInputStream(filename));
data = infile.read();
System.out.println("data");
System.out.println(data);
while (data != -1) {
filename = new File("/Users/meh/Documents/srt" + count + ".srt");
//RandomAccessFile outfile = new RandomAccessFile(filename, "rw");
OutputStream outfile = new BufferedOutputStream(new FileOutputStream(filename));
while (data != -1 && leng < splitlen) {
outfile.write(data);
leng++;
data = infile.read();
}
leninfile += leng;
leng = 0;
outfile.close();
changeTimeStamp(filename, count);
count++;
}
} catch (Exception e) {
e.printStackTrace();
}
}
Я пытаюсь проверить правильность формата отметки времени или нет. Затем мне нужно проверить следующую строку, чтобы быть диалогом, а затем следующую строку, чтобы быть пустой строкой. затем он может остановить чанк или добавить текст из предыдущего чанка в следующий файл чанка в начале строки. чтобы он мог быть в правильном формате.
Я пытался проверить формат как,
while ((strLine = br.readLine()) != null) {
String[] atoms = strLine.split(" --> ");
if (atoms.length == 1) {
out.write(strLine + "\n");
} else {
String startTS = atoms[0];
String endTS = atoms[1];
System.out.print("sri atmos start" + startTS);
System.out.print("sri atmos end" + endTS);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss,SSS");
sdf.setLenient(false);
try
{
sdf.parse(startTS);
sdf.parse(endTS);
System.out.println("Valid time");
System.out.println("File path" + srcFileNm);
}
catch(Exception e) {
System.out.println("Invalid time");
System.out.println("Exception start" + startTS);
System.out.println("Exception end" + endTS);
}
}
некоторые экраны моих выходных блоков,
Помогите мне, как я могу сделать это возможным.