Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我对文件进行tar时,其抛出异常为;太长(>;100字节)TarArchiveOutputStream“;_Java_Apache Commons - Fatal编程技术网

Java 当我对文件进行tar时,其抛出异常为;太长(>;100字节)TarArchiveOutputStream“;

Java 当我对文件进行tar时,其抛出异常为;太长(>;100字节)TarArchiveOutputStream“;,java,apache-commons,Java,Apache Commons,当我对文件进行tar时,其抛出异常为“太长(>100字节)TarArchiveOutputStream”。请指导我插入setLongFileMode(TarOutputStream.LONGFILE_GNU);在这个节目里 private static void zipFilesRecursively(File baseDir, File source,TarArchiveOutputStream out) throws IOException { if (sourc

当我对文件进行tar时,其抛出异常为“太长(>100字节)TarArchiveOutputStream”。请指导我插入setLongFileMode(TarOutputStream.LONGFILE_GNU);在这个节目里

 private static void zipFilesRecursively(File baseDir, File source,TarArchiveOutputStream out) throws IOException {

            if (source.isFile()) {

                    System.out.println("Adding File: "+ baseDir.toURI().relativize(source.toURI()).getPath());

                    FileInputStream fi = new FileInputStream(source);

                    BufferedInputStream sourceStream = new BufferedInputStream(fi,BUFFER);

                    TarArchiveEntry entry = new TarArchiveEntry(source, baseDir.getParentFile().toURI().relativize(source.toURI()).getPath());

                    int count;

                    byte data[] = new byte[BUFFER];

                    while ((count = sourceStream.read(data, 0, BUFFER)) != -1) {

                            out.write(data, 0, count);

                    }

                    sourceStream.close();

                    out.closeArchiveEntry();

            } else {

                    if (source.listFiles() != null) {
                            if (source.listFiles().length == 0) {

                            System.out.println("Adding Empty Folder: "+ baseDir.toURI().relativize(source.toURI()).getPath());

            TarArchiveEntry entry = new TarArchiveEntry(source, baseDir.getParentFile().toURI().relativize(source.toURI()).getPath());
                            out.putArchiveEntry(entry);
                            out.closeArchiveEntry();
                            }

                            for (File file : source.listFiles())

                                    zipFilesRecursively(baseDir, file, out);
看看这个:

在使用流之前,需要将格式设置为posix:

TarArchiveOutputStream stream = new TarArchiveOutputStream(...)
stream.setLongFileMode(TarArchiveOutputStream.LONGFILE_POSIX)