在下面的代码中,我试图将src的内容复制到dest并加载dest以打印它的内容。
如果我有dest.txt可用并且其中包含一些内容,那么我会看到内容被覆盖并且内容也被打印出来。
如果文件dest.txt不存在,则会创建该文件,并将src.txt中的内容复制到其中并打印内容。
唯一的问题是,如果dest.txt存在且为空,那么我会看到src.txt中的内容被复制到其中,但日志中没有任何内容被打印出来。
我想知道为什么。
public static void main(String[] args) {
String resourcesPath = "src/main/resources/";
try
{
Path source = Paths.get(resourcesPath + "src.txt");
Path destination = Paths.get(resourcesPath + "dest.txt");
Files.copy(source, destination, StandardCopyOption.REPLACE_EXISTING);
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("dest.txt");
StringWriter writer = new StringWriter();
IOUtils.copy(input, writer, "utf-8");
System.out.println("Properties file content is " + writer.toString());
}
catch (Exception e)
{
e.printStackTrace();
}
}
答案 0 :(得分:1)
您是如何打包应用的?如果文件已存在于src/main/resources
中,并且您正在创建一个jar,则空文件将位于jar中,getResourceAsStream()
可能会从jar而不是文件系统中获取它。