Java – eclipse Juno: unassigned closable value
•
Java
I wonder why I got the warning of this new eclipse Juno, although I think I closed everything correctly Can you tell me why I get this warning in the following code?
public static boolean copyFile(String fileSource,String fileDestination) { try { // Create channel on the source (the line below generates a warning unassigned closeable value) FileChannel srcChannel = new FileInputStream(fileSource).getChannel(); // Create channel on the destination (the line below generates a warning unassigned closeable value) FileChannel dstChannel = new FileOutputStream(fileDestination).getChannel(); // Copy file contents from source to destination dstChannel.transferFrom(srcChannel,srcChannel.size()); // Close the channels srcChannel.close(); dstChannel.close(); return true; } catch (IOException e) { return false; } }
Solution
If you run on Java 7, you can use a new try with resources block like this, and your flow will be closed automatically:
public static boolean copyFile(String fileSource,String fileDestination) { try( FileInputStream srcStream = new FileInputStream(fileSource); FileOutputStream dstStream = new FileOutputStream(fileDestination) ) { dstStream.getChannel().transferFrom(srcStream.getChannel(),srcStream.getChannel().size()); return true; } catch (IOException e) { return false; } }
You do not need to explicitly close the underlying channels However, if you don't use Java 7, you should write code in a cumbersome old way, ending with blocks:
public static boolean copyFile(String fileSource,String fileDestination) { FileInputStream srcStream=null; FileOutputStream dstStream=null; try { srcStream = new FileInputStream(fileSource); dstStream = new FileOutputStream(fileDestination) dstStream.getChannel().transferFrom(srcStream.getChannel(),srcStream.getChannel().size()); return true; } catch (IOException e) { return false; } finally { try { srcStream.close(); } catch (Exception e) {} try { dstStream.close(); } catch (Exception e) {} } }
Look at the Java 7 version:)
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码