我已经使用Tree数据结构构建了一个Spring引导MVC应用程序来代替实际的数据库。程序从文本文件中读取并在树中存储单词。最初我使用了一个CommandLineRunner类来填充树,这可以工作......但是在创建一个胖jar并运行jar之后,我得到一个找不到文件的异常。我怎样才能用maven构建一个包含maven的文本文件的胖罐?
该文件当前位于项目根目录中。
这是生成树的逻辑:
@Component
@Order(value = Ordered.HIGHEST_PRECEDENCE)
public class GenerateTree implements CommandLineRunner {
@Autowired
TreeRepository trie = new TreeRepository();
@Autowired
FileReader fileReader = new FileReader();
@Override
public void run(String... args) throws Exception {
for (String s : fileReader.readFile("wordList1.txt")){
trie.add(s);
}
}
}
这是读入文件的逻辑:
@Component
public class FileReader {
List<String> readFile(String filename){
List<String> list = new ArrayList<>();
try (Stream<String> stream = Files.lines(Paths.get(filename))) {
list = stream
.filter(line -> line.matches("[a-zA-Z]+"))
.collect(Collectors.toList());
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
}
答案 0 :(得分:0)
您无法访问jar中的文件(请参阅https://stackoverflow.com/a/8258308/4516887)。
将wordlist.txt
放入src/main/resources
目录并使用[ClassPathResource][1]
阅读其内容:
ClassPathResource resource = new ClassPathResource("worldlist.txt");
try (InputStream in = resource.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in))) {
String line;
while((line = reader.readLine()) != null) {
...
}
}