今天,我的代码可以运行,但它将2行分为2行,但这不是目标。 我想改变分割,我想将50行除以50行而不是2乘2。 如果我这样离开,我有三行2行 如果我有135行,我想:
这是我的代码:
private void MyCode(ProducerTemplate producerTemplate, InputStream content, String endpoint, String fileName, HashMap<String, Object> headers){
ArrayList<String> list = new ArrayList<String>();
String line;
long numSplits = 50; //Number of lines per split
int sourcesize=0; //Number of lines
int number = 800; //my filename
BufferedReader br = new BufferedReader(new InputStreamReader(content));
try{
while((line = br.readLine()) != null){
sourcesize++;
list.add(line); //add the lines in the arraylist
}
System.out.println("Lines in the file: " + sourcesize);
for( int i = 0 ; i <= list.size() ; i+=numSplits) {
String Filename = ""+ number;
System.out.println(Filename);
StringBuilder builder = new StringBuilder();
builder.append(list.get(i)).append(System.lineSeparator()).append(list.get(i+1));
producerTemplate.sendBodyAndHeader(endpoint, builder.toString(), "CamelFileName",Filename); //Used to forward lines and the file name
}
} catch (IOException e) {
e.printStackTrace();
}
}
我想:
for (int k=0;k<numSplits;k++) {
builder.append(list.get(i));
builder.append(System.lineSeparator());
}
如何更改拆分?
如何切断arraylist
所有50次出现?
答案 0 :(得分:0)
private void MyCode(ProducerTemplate producerTemplate, InputStream content, String endpoint, String fileName, HashMap<String, Object> headers){
BufferedReader br = new BufferedReader(new InputStreamReader(content));
ArrayList<String> list = new ArrayList<String>();
String line;
int numSplits = 50;
int number = 800;
int sourcesize=0;
try{
while((line = br.readLine()) != null){
sourcesize++;
list.add(line);
}
}
catch (IOException e){
e.printStackTrace();
}
System.out.println("Lines in the file: " + sourcesize);
ArrayList<ArrayList<String>> parts = cutListInChunksOfSameSize(list, numSplits);
for (ArrayList<String> part : parts){
String Filename = ""+ (number++);
System.out.println(Filename);
StringBuilder builder = new StringBuilder();
for( int i = 0 ; i <part.size() ;i++){
builder.append(part.get(i)).append(System.lineSeparator());
}
producerTemplate.sendBodyAndHeader(endpoint, builder.toString(), "CamelFileName",Filename);
}
}
public <T> ArrayList<ArrayList<T>> cutListInChunksOfSameSize(ArrayList<T> list, final int L) {
ArrayList<ArrayList<T>> parts = new ArrayList<ArrayList<T>>();
final int N = list.size();
for (int i = 0; i < N; i += L) {
parts.add(new ArrayList<T>(list.subList(i, Math.min(N, i + L))));
}
return parts;
}