You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Gary D. Gregory (Jira)" <ji...@apache.org> on 2022/06/23 12:58:00 UTC

[jira] [Closed] (IO-609) FileUtils.copyToFile backward incompatibility bug

     [ https://issues.apache.org/jira/browse/IO-609?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gary D. Gregory closed IO-609.
------------------------------
    Resolution: Cannot Reproduce

> FileUtils.copyToFile backward incompatibility bug
> -------------------------------------------------
>
>                 Key: IO-609
>                 URL: https://issues.apache.org/jira/browse/IO-609
>             Project: Commons IO
>          Issue Type: Bug
>    Affects Versions: 2.6
>            Reporter: xia0c
>            Priority: Major
>
> Hi,
> The following code snippets throw an IOException: Stream closed. It works well before commons-io 2.6. When I update commons-io to 2.6, it failed. There is a backward incompatibility bug behind it.
> The function code:
> {code:java}
> public class Demo {
> 	  private void backupFile(String srcPath, String entryPath, ZipOutputStream stream) throws IOException {
> 		    ZipEntry zipEntry = new ZipEntry(entryPath);
> 		    stream.putNextEntry(zipEntry);
> 		    Files.copy(Paths.get(srcPath), stream);
> 		  }
> 	  private void backupDir(String srcDir, String dstDir, ZipOutputStream stream) throws IOException {
> 		    File dir = new File(srcDir);
> 		    for (String path : dir.list()) {
> 		      System.out.println(path);
> 		      backupFile(dir.getAbsolutePath() + File.separator + path, dstDir + File.separator + path, stream);
> 		    }
> 		  }
> 	  public void backup(String name) throws IOException {
> 		      Files.createDirectories(Paths.get("/Users/chenlingchao/eclipse_projects/workspace/BBI.BugDetection"));
> 		      ZipOutputStream stream = new ZipOutputStream(
> 		          Files.newOutputStream(Paths.get("/Users/chenlingchao/eclipse_projects/workspace/BBI.BugDetection/tmp" + File.separator + name)));
> 		      try {
> 		        backupDir("/Users/chenlingchao/eclipse_projects/workspace/BBI.BugDetection/tmp", "meta" + File.separator + "tables", stream);
> 		        stream.closeEntry();
> 		      } finally {
> 		        stream.close();
> 		      }
> 		    }
> 	  
> 	  public void restore(String name) throws IOException {
> 		      ZipInputStream stream = new ZipInputStream(
> 		          Files.newInputStream(Paths.get("/Users/chenlingchao/eclipse_projects/workspace/BBI.BugDetection/tmp" + File.separator + name)));
> 		      try {
> 		        ZipEntry entry;
> 		        while ((entry = stream.getNextEntry()) != null) {
> 		          FileUtils.copyToFile(stream, new File("/Users/chenlingchao/eclipse_projects/workspace/BBI.BugDetection/tmp" + File.separator + entry.getName()));
> 		        }
> 		      } finally {
> 		        stream.close();
> 		      }
> 		  }
> }
> {code}
> The test code:
> {code:java}
> 	@Test
> 	public void TestDemo() throws IOException{
>     Demo test = new Demo();
>     test.backup("test.zip");
>     test.restore("test.zip");
> 	}
> 	
> {code}



--
This message was sent by Atlassian Jira
(v8.20.7#820007)