java - 如何监控 Apache Commons VFS 中文件传输的进度?

标签 java apache-commons vfs apache-commons-vfs

使用Apache Commons VFS ,如何监控文件传输的进度。我需要能够通过上传和下载来做到这一点。我还需要监控 HTTP、FTP、SFTP 和 FTPS 的进度。我在文档中找不到任何相关内容。

最佳答案

可以通过从VFS获取输入和输出流来完成。以下示例使用 commons-net 中的实用程序类(VFS 的依赖项)来管理复制和进度监视。您同样可以手动完成。

import org.apache.commons.net.io.Util;
import org.apache.commons.net.io.CopyStreamListener;

private void copy(FileObject sourceFile, FileObject destinationFile, CopyStreamListener progressMonitor) throws IOException {
    InputStream sourceFileIn = sourceFile.getContent().getInputStream();
    try {
        OutputStream destinationFileOut = destinationFile.getContent().getOutputStream();
        try {
            Util.copyStream(sourceFileIn, destinationFileOut, Util.DEFAULT_COPY_BUFFER_SIZE, sourceFile.getContent().getSize(), progressMonitor);
        } finally {
            destinationFileOut.close();
        }
    } finally {
        sourceFileIn.close();
    }
}

关于java - 如何监控 Apache Commons VFS 中文件传输的进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11101267/

相关文章:

java - Apache Commons Pool 2 中的 maxTotal 和 maxIdle 有什么区别?

java - 返回 vfs 而不是文件

linux - VFS 如何知道要调用哪些底层文件系统函数?

java - glassfish v3 上的 Comet 实现

java - Spring Reactive Web - 异常总是包含在 500 中

java - 如何在 Java 中生成顺序整数的列表或数组?

validation - 最好的 Java 电子邮件地址验证方法是什么?

linux - 为不同的 shell session 显示不同的内容( fuse ?)

java如何用一行代码初始化一个ArrayList

Java @Id 不带@column(nullable=false)