gpt4 book ai didi

java - 如何将资源复制到 Java 中另一个位置的文件

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:07:16 25 4
gpt4 key购买 nike

我正在尝试将项目中的资源复制到磁盘上的另一个位置。到目前为止,我有这段代码:

if (!file.exists()){
try {
file.createNewFile();
Files.copy(new InputSupplier<InputStream>() {
public InputStream getInput() throws IOException {
return Main.class.getResourceAsStream("/" + name);
}
}, file);
} catch (IOException e) {
file = null;
return null;
}
}

它工作正常,但是 InputSupplier 类已被弃用,所以我想知道是否有更好的方法来完成我正在尝试做的事情。

最佳答案

请参阅 Guava 的文档 InputSupplier class :

For InputSupplier<? extends InputStream>, use ByteSource instead. For InputSupplier<? extends Reader>, use CharSource. Implementations of InputSupplier that don't fall into one of those categories do not benefit from any of the methods in common.io and should use a different interface. This interface is scheduled for removal in December 2015.

所以在您的情况下,您正在寻找 ByteSource :

Resources.asByteSource(url).copyTo(Files.asByteSink(file));

参见 this section Guava Wiki 的更多信息。


如果您正在寻找纯 Java(无外部库)版本,您可以执行以下操作:

try (InputStream is = this.getClass().getClassLoader().getResourceAsStream("/" + name)) {
Files.copy(is, Paths.get("C:\\some\\file.txt"));
} catch (IOException e) {
// An error occurred copying the resource
}

请注意,这仅对 Java 7 及更高版本有效。

关于java - 如何将资源复制到 Java 中另一个位置的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37377110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com