标签: apache-commons-io

使用 IOUtils.copy() 时套接字流挂起

我想InputStream从客户端发送一个包含 XML 到服务器。所述服务器使用 XML 流操作Streaming API for XML (StAX)并将其发送回客户端。

我设法将 XML 发送到服务器,客户端收到答案,但没有退出,因为服务器从未完成读取InputStream客户端的表单。但是当服务器只是将输入转储到System.out而不是发送某些东西时,读取就完成了......

编辑我忘了提到它IOUtils.copy()在客户端上的两个独立线程中运行。

这里有一些代码来重现这一点,我已经在服务器上替换了该StAX部分IOUtils.copy()

服务器

ServerSocket serverSocket = new ServerSocket(port);
Socket clientSocket = serverSocket.accept();

InputStream in = clientSocket.getInputStream();
OutputStream out = clientSocket.getOutputStream();
IOUtils.copy(in, out);
Run Code Online (Sandbox Code Playgroud)

客户

Socket socket = new Socket(host, port);
FileInputStream fin = new FileInputStream(file);
OutputStream out = socket.getOutputStream();
IOUtils.copy(fin, out)

InputStream in = socket.getInputStream();
IOUtils.copy(in, System.out)
Run Code Online (Sandbox Code Playgroud)

java sockets apache-commons-io

3
推荐指数
1
解决办法
6588
查看次数

无法使用FileUtils复制文件

我试图将文件从一个目的地复制到另一个目的地.我无法理解错误发生的原因.任何帮助表示赞赏.

public class FileSearch {

    public void findFiles(File root) throws IOException {

        File[] listOfFiles = root.listFiles();
        for (int i = 0; i < listOfFiles.length; i++) {
            String iName = listOfFiles[i].getName();
            if (listOfFiles[i].isFile() && iName.endsWith(".tif")) {
                long fileSize = listOfFiles[i].length();

                long sizeToKb = fileSize/1024;

                File copyDest = new File("C:\\Users\\username\\Desktop\\ZipFiles");

                if (fileSize <= 600000) {
                    System.out.println("|" + listOfFiles[i].getName().toString() + " | Size: " + sizeToKb+" KB");
                    FileUtils.copyFile(listOfFiles[i], copyDest);
                }

            } else if (listOfFiles[i].isDirectory()) {
                findFiles(listOfFiles[i]);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我收到以下错误 Exception in thread …

java apache-commons-io

2
推荐指数
2
解决办法
9815
查看次数

排除文件过滤器

我使用以下代码过滤具有以下扩展名的文件

FileFilter fileFilter= new WildcardFileFilter("*.docx");
File[] sampleFiles= filesDirectory.listFiles(fileFilter);
Run Code Online (Sandbox Code Playgroud)

但是,如果我想要相反的情况,我想排除具有此扩展名的文件。目前我有以下代码

public class FileFilter {
    public static void main(String[] args) {
        File dir = new File("C:\\temp\\filter-exclude");

        File[] files = dir.listFiles(new ExcludeFilter());
        for (File f : files) {
            System.out.println("file: " + f.getName());
        }
    }

    public static class ExcludeFilter implements java.io.FileFilter {

        @Override
        public boolean accept(File file) {
            if (file.getName().toLowerCase().endsWith("docx")) {
                return false;
            }
            return true;
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

但不确定是否已经有这方面的课程。有这样的课吗?

java apache-commons-io

2
推荐指数
1
解决办法
1498
查看次数

无法删除原始文件

我们使用批处理文件作为窗口服务运行jar并将xml文件放在c:/processed 目录中;

如果xml有一个错误的格式,然后将其移动到错误文件夹; 我们使用下面的方法将文件移动到错误文件夹,但得到以下异常.

我认为当进程运行时它无法将文件移动到错误文件夹.

FileUtils.moveToDirectory("a.xml", "c:/processed/error", false);
Run Code Online (Sandbox Code Playgroud)

movingErrorFolder中的异常:复制到'c:/processed/error/a.xml'后无法删除原始文件'c:/processed/a.xml'

java apache-commons-io

1
推荐指数
1
解决办法
1万
查看次数

Eclipse插件项目中的库

我想在Eclipse中使用Apache commons.io作为插件项目.我将.jar添加到buildpath中:

(properties-> java build path-> Libraries)

但是当我尝试测试我的项目时,我收到此错误:

org/apache/commons/io/FileUtils的NoClassDefFoundError.

我认为Eclipse不会复制库或我想念项目复制该库.

我怎么解决这个问题?我正在尝试编写一个导出插件,其中一个完整的文件夹被复制到另一个文件夹.

java eclipse eclipse-plugin apache-commons-io

1
推荐指数
1
解决办法
1628
查看次数

我们如何递归地列出所有文件和文件夹?

通过谷歌搜索,在这个 SO 站点中,结果将FileUtils.listFilesAndDirs()来自 Apache Commons IO 的方法。

但是这种方法不会递归进入子文件夹 - 我们需要递归文件列表。

我们如何使用 Commons IO 做到这一点?

PS:

一种本机方法是使用File.listFiles()JDK 本机支持的解决方案here

java recursion file-listing apache-commons-io

1
推荐指数
1
解决办法
1377
查看次数

Apache FileUtils listFiles

嘿大家我正在尝试获取目录列表.我正在使用FileUtils listFiles().

我想做这样的事情:listFiles(File,IOFileFilter,false).我真正的问题是如何从IOFileFilter实现accept(),以便检查当前File是否是目录?

先感谢您.

java file apache-commons-io

0
推荐指数
1
解决办法
2998
查看次数

java.io.IOException:请求写入“字节”的请求超出了条目“”字节的标头中的大小

我正在使用创建tar.Gzip文件,GZIPOutputStream并且添加了另一个逻辑,即如果在压缩文件时捕获到任何异常,我的代码将重试3次。

当我抛出一个IOException测试我的重试逻辑时,它抛出下面的异常:
java.io.IOException: request to write '4096' bytes exceeds size in header of '2644' bytes for entry 'Alldbtypes'

我在行上收到异常: org.apache.commons.io.IOUtils.copyLarge(inputStream, tarStream);

private class CompressionStream extends GZIPOutputStream {
    // Use compression levels from the deflator class
    public CompressionStream(OutputStream out, int compressionLevel) throws IOException {
        super(out);
        def.setLevel(compressionLevel);
    }
}

public void createTAR(){
    boolean isSuccessful=false;
    int count = 0;
    int maxTries = 3;
    while(!isSuccessful) {
        InputStream inputStream =null;
        FileOutputStream outputStream =null;
        CompressionStream compressionStream=null;
        OutputStream md5OutputStream = null; …
Run Code Online (Sandbox Code Playgroud)

java apache-commons-io gzipoutputstream

0
推荐指数
1
解决办法
3282
查看次数