У меня есть класс Java для чтения файла и установки некоторых данных в класс. У меня есть классНесколько операций с FileInputStream
FileMetadata.java
public class FileMetadata implements Serializable {
private String location;
private Double size;
private String content;
private List<String> lines;
private String md5Digest;
//parameterized constructor
//getters and setters
}
После прочтения файла, я хочу, чтобы установить значение в этом классе.
Это мой метод для чтения файла.
FileUtil.java
public static void readFile(File file) throws IOException {
FileInputStream fis = null;
List<String> fileLines = new ArrayList<String>();
try {
fis = new FileInputStream(file);
StringBuilder sb = new StringBuilder();
StringBuilder sbLine = new StringBuilder();
int ch;
while ((ch = fis.read()) != -1) {
String line = "" + (char) ch;
sb.append(line);
if(line.matches("(\r|\n)")) {
fileLines.add(sbLine.toString());
sbLine.setLength(0);
} else {
sbLine.append(line);
}
}
String md5 = DigestUtils.md5Hex(fis);
System.out.println(md5);
System.out.println(sb.toString());
System.out.println(getFileSizeInKB(file));
for(String str : fileLines) {
System.out.println(str);
}
} finally {
if (fis != null) {
fis.close();
}
}
}
Но список не приходит должным образом, как это добавляет пустую строку после каждой строки, так как следующий файл строка «\ г \ п». Во второй раз он добавляет пустой StringBuilder, поэтому список получает дополнительную пустую строку после каждой строки. Я могу попробовать проверить его длину, прежде чем добавлять в список. Но если файл содержит пустую строку, я хочу добавить ее в список.
Как правило, не рекомендуется повторно использовать потоки. Создайте новый поток ввода для новых операций. –