Я хочу вырезать текстовый файл. Я хочу вырезать файл 50 строк на 50 строк.Разделить файл на несколько файлов
Например, если файл содержит 1010 строк, я бы восстановил 21 файл.
Я знаю, как подсчитать количество файлов, количество строк, но как только я напишу, это не работает.
Я использую Camel Simple (Talend), но это код Java.
private void ExtractOrderFromBAC02(ProducerTemplate producerTemplate, InputStream content, String endpoint, String fileName, HashMap<String, Object> headers){
ArrayList<String> list = new ArrayList<String>();
BufferedReader br = new BufferedReader(new InputStreamReader(content));
String line;
long numSplits = 50;
int sourcesize=0;
int nof=0;
int number = 800;
try {
while((line = br.readLine()) != null){
sourcesize++;
list.add(line);
}
System.out.println("Lines in the file: " + sourcesize);
double numberFiles = (sourcesize/numSplits);
int numberFiles1=(int)numberFiles;
if(sourcesize<=50) {
nof=1;
}
else {
nof=numberFiles1+1;
}
System.out.println("No. of files to be generated :"+nof);
for (int j=1;j<=nof;j++) {
number++;
String Filename = ""+ number;
System.out.println(Filename);
StringBuilder builder = new StringBuilder();
for (String value : list) {
builder.append("/n"+value);
}
producerTemplate.sendBodyAndHeader(endpoint, builder.toString(), "CamelFileName",Filename);
}
}
} catch (IOException e) {
e.printStackTrace();
}
finally{
try {
if(br != null)br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Для людей, которые не знают, верблюд, эта линия используется для отправки файла:
producerTemplate.sendBodyAndHeader (endpoint, line.toString(), "CamelFileName" Filename);
конечная точка ==> Destination (это нормально с другим кодом)
линии. ToString() ==> Значения
И затем имя файла (это нормально с другим кодом)
Merci Jean-François! Я применил некоторые изменения (см. Мой код). Я создаю 3 файла, но я не могу их нарезать, каждый файл содержит весь исходный файл. И с помощью списка массивов возврат каретки не выполняется. – Valentino
Спасибо, Жан-Франсуа! Я, должно быть, глупый ... :) Кажется странным для цикла 50 раз: 'for (int k = 0; k
Valentino