Я хочу разбить файл на строки по 8 и поместить их в ArrayList of Strings.
Например, этот файл:
public class Example {
private int result = 2 + 1;
private int result2 = 3 * 2;
private int result3 = 3 + 3;
private int result4 = 5 + 1 * 74;
private String a = "This is a string";
System.out.println("Just a print");
int b = 12;
System.out.println("Another print");
}
приведет к следующим двум записямArrayList:
ArrayList<String> fileSplitted = { "public class Example {\nprivate int result = 2 + 1;\nprivate int result2 = 3 * 2;\nprivate int result3 = 3 + 3;\n\nprivate int result4 = 5 + 1 * 74;\nprivate String a = "This is a string";\nSystem.out.println("Just a print");" ; "int b = 12;\n\nSystem.out.println("Another print");\n}" }
Итак, я написал эту функцию:
public static ArrayList<String> splitFile(File file) throws FileNotFoundException {
ArrayList<String> fileSplitted = new ArrayList<String>();
ArrayList<String> fileSplittedReturn = new ArrayList<String>();
Scanner input = new Scanner(file);
StringBuilder tmp = new StringBuilder();
int count = 0;
int countTotal = 0;
while (input.hasNextLine()) {
fileSplitted.add(input.nextLine());
}
for (String s : fileSplitted) {
if (count < 8 && countTotal != fileSplitted.size() - 1) {
tmp.append(s);
count++;
} else if (count == 8 && countTotal != fileSplitted.size() - 1) {
fileSplittedReturn.add(tmp.toString());
tmp.setLength(0);
tmp.append(s);
count = 1;
} else if (countTotal == fileSplitted.size() - 1) {
fileSplittedReturn.add(tmp.toString());
}
countTotal++;
}
return fileSplittedReturn;
}
Несмотря на то, что она работает (я еще не нашел ни одной ошибки, но точно не могу сказать),Я думаю, что это довольно тяжело и не так легко читается.
Есть ли способ украсить эту функцию и сделать ее немного более легкой?