我在目录中有两个文件。他们两个都有文本行。根据Notepad ++,每行都有一个CRLF。我的ReadFile类读取一个文件,而不读取另一个文件,而不读取另一个文件。
private FileRead fileRead = new FileRead();
private JobSiteData jobSiteData = new JobSiteData();
private String path = "C:/Users/Antonio/IdeaProjects/JobSearch/websiteTest/";
如果我取消注释该块并注释掉另一个块,则可以正常工作。
@Test
void setAllText_ItReturnsAllLinesFromSite_arrayListOfLinesFromSite() throws IOException {
// ArrayList<String> thisWorks = new ArrayList<>();
// thisWorks = fileRead.getLinesFromFile(path + "allTextTest.txt");
// for (String s : thisWorks) {
// System.out.println(s);
// }
ArrayList<String> thisDoesntWork = new ArrayList<>();
thisDoesntWork = fileRead.getLinesFromFile(path + "goDaddySplitTestAllLines.txt");
for (String s : thisDoesntWork) {
System.out.println(s); // prints "File is empty."
}
}
这是我的FileRead类。
public class FileRead {
private String fileName;
private ArrayList<String> linesFromFile = new ArrayList<>();
private Scanner fileScanner;
public ArrayList<String> getLinesFromFile(String fileName) {
this.fileName = fileName;
setLinesFromFile();
if (isFileEmpty()) {
linesFromFile.add("File is empty.");
}
return linesFromFile;
}
private void setLinesFromFile() {
File file = new File(fileName);
if (doesFileExist(file)) {
readFile();
closeFileReader();
}
}
private Boolean doesFileExist(File file) {
try {
fileScanner = new Scanner(file);
} catch (FileNotFoundException e) {
linesFromFile.add("File does not exist.");
return false;
}
return true;
}
private void readFile() {
if (fileScanner != null) {
if (!linesFromFile.isEmpty()) {
linesFromFile.clear();
}
while (fileScanner.hasNextLine()) {
linesFromFile.add(fileScanner.nextLine());
}
}
}
private void closeFileReader() {
if (fileScanner != null) {
fileScanner.close();
}
}
private boolean isFileEmpty() {
return linesFromFile.size() == 0;
}
}
更新:我发现了问题。由于某种原因,文件中的这一行导致扫描仪无法读取这些行。
“ GoDaddy的Productivity产品套件可帮助数以百万计的小型企业运营和发展自己的业务。我们正在寻找一位对软件开发充满热情的工程师,以帮助加速我们的增长。如果您要在公共场合构建世界一流的体验,使用JavaScript和React的云基础架构,学习新知识并与一个有趣的团队合作,我们希望与您见面!”
此行是第四行。如果删除它及其后的所有内容,则扫描仪工作正常。如果我删除文件中的所有内容,而仅将文件中的这一行作为第一行,那么它也将无法工作。有人知道为什么吗?