当文件为空时,Java文件副本不起作用

时间:2016-01-13 19:12:04

标签: java file java-io

在下面的代码中,我试图将src的内容复制到dest并加载dest以打印它的内容。

  1. 如果我有dest.txt可用并且其中包含一些内容,那么我会看到内容被覆盖并且内容也被打印出来。

  2. 如果文件dest.txt不存在,则会创建该文件,并将src.txt中的内容复制到其中并打印内容。

  3. 唯一的问题是,如果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();
        }
    }
    

1 个答案:

答案 0 :(得分:1)

您是如何打包应用的?如果文件已存在于src/main/resources中,并且您正在创建一个jar,则空文件将位于jar中,getResourceAsStream()可能会从jar而不是文件系统中获取它。