- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想知道为什么我会在新的 eclipse Juno 上收到这个警告,尽管我认为我正确地关闭了所有内容。您能告诉我为什么我会在以下代码中收到此警告吗?
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, 0, srcChannel.size());
// Close the channels
srcChannel.close();
dstChannel.close();
return true;
}
catch (IOException e)
{
return false;
}
}
最佳答案
如果您在 Java 7 上运行,您可以像这样使用新的 try-with-resources block ,您的流将自动关闭:
public static boolean copyFile(String fileSource, String fileDestination)
{
try(
FileInputStream srcStream = new FileInputStream(fileSource);
FileOutputStream dstStream = new FileOutputStream(fileDestination) )
{
dstStream.getChannel().transferFrom(srcStream.getChannel(), 0, srcStream.getChannel().size());
return true;
}
catch (IOException e)
{
return false;
}
}
您不需要显式关闭底层 channel 。但是,如果您不使用 Java 7,则应使用 finally block 以繁琐的旧方式编写代码:
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(), 0, srcStream.getChannel().size());
return true;
}
catch (IOException e)
{
return false;
} finally {
try { srcStream.close(); } catch (Exception e) {}
try { dstStream.close(); } catch (Exception e) {}
}
}
看看 Java 7 版本有多好:)
关于java - eclipse 朱诺 : unassigned closeable value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11841033/
我是 selenium 的新手。我在使用 Selenium WebDriver 时遇到了一些问题。 我想使用 Selenium WebDriver 打开网站,例如 www.filpkart.com 我
在阅读一些 Java 源代码时,我遇到了这一行: ((Closeable) some_obj).close(); some_obj 显然是一个实现了 Closeable 接口(interface)的类
我最近查看了 jdk 1.8 的 src.zip 文件,发现了一些很奇怪的东西。 public interface Closeable extends AutoCloseable 既然AutoClos
我是单元测试的新手。 我应该如何为这个方法编写 JUnit 测试? public static void close(Closeable closeable) { if (closea
我问了this question yesterday .我想我得到了正确的答案,但其他答案之一给我留下了一个问题。如果我有这样的代码: File file = new File("somefile.t
我已经实现了自己的可关闭 JTabbedPane(基本上遵循了 here 的建议 - 通过扩展 JTabbedPane 并覆盖一些方法并调用 setTabComponentAt(...))。它完美地工
我想扩展选项卡控件以具有可关闭的选项卡项目。 我找到了 Kent 的这个 WPF 解决方案: On the WPF TabControl - can I add content next to the
我的整个系统有一个静态 HashMap,其中包含一些对象的引用;我们称之为myHash 。这些对象仅在我需要它们时才会实例化,例如 private static HashMap directories
我不明白。例如我们在代码中有一个 OutputStream 类型的变量,当我们停止使用它时我们应该调用它的 close() ,为什么它没有以这种方式实现:GC 在清理时调用 close() 本身这个变
有时我必须编写将自己注册为其他对象的监听器的对象。良好的编程实践表明我们应该始终注销此类监听器。通过使类实现 Closeable 并在 close() 中注销监听器来尝试强制执行此类行为是一种好习惯吗
我正在学习 Java,我找不到关于 implements Closeable 和 implements AutoCloseable 接口(interface)的任何好的解释。 当我实现 interfa
我有一个 Map如果从 map 中删除了一个键,我想关闭 Closeable .通常我有这样的东西: Closeable c = map.remove(key); c.close(); 我的 Ecli
有人可以向我解释这里发生了什么以及顺序是什么吗?。输出对我来说没有任何意义。 输出为 T 1 IOE F。 代码是: import java.io.Closeable; import java.io.
在 Android 应用中,我将此代码添加到 onCreate() Closeable sss = new Socket(); if (!(sss instanceof Closeab
我想知道为什么我会在新的 eclipse Juno 上收到这个警告,尽管我认为我正确地关闭了所有内容。您能告诉我为什么我会在以下代码中收到此警告吗? public static boolean cop
假设我们有两个 Closeable bean: @Component public class CloseableBean1 implements Closeable { private Bu
为什么他们要添加 AutoCloseable 并更改 Closeable 如下: public interface Closeable extends AutoCloseable { publ
我正在尝试创建一个管理多个 Closeable 资源的 Java 类。 C++ 解决方案简单明了,并且可以轻松扩展到更多资源: class composed_resource { resour
我遇到了类似于 this one 的问题,除了 java.util.Scanner。我有这个静态方法: public static void close(final Closeable c) {
当我运行我的 Android 应用程序时,出现以下错误: 10-12 16:46:44.719 2710-2719/? E/StrictMode: A resource was acquired at
我是一名优秀的程序员,十分优秀!