我有一个Java类来读取文件并将一些数据设置为类。我有一个班级
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();
}
}
}
但是列表没有正确显示,因为它在每行之后添加一个空字符串,因为下一行的文件是“\ r \ n”。第二次添加空StringBuilder,以便列表在每行之后获得额外的空字符串。 在添加到List之前,我可以尝试检查它的长度。但如果文件包含空行,我想添加到列表中。
答案 0 :(得分:2)
您可以尝试使用BufferedReader
课程。
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line=br.readLine())!=null) {
..............
}
br.close();
FileInputStream fis = new FileInputStream(file);
String md5 = DigestUtils.md5Hex(fis);
fis.close();
(示例中没有异常处理)。