各位大牛啊,谁用过at4j啊,那个directory是怎么构造出来的啊
用at4j来打包文件夹,需要创建archive,但是sample中默认的有个directoryView的targetDir,哭了,在线等,谢谢
------解决方案--------------------
直接贴代码,at4j实现java tar打包,打包后中文文件名不会乱码。百度了下没人解决。贴出来下。
参考http://entityfs.org/ 和 http://www.at4j.org/
directoryView 是 entityfs 啥文件系统弄出来的。还是google好用。
先建好下面两个
E:/A/中文.txt
E:/B
运行完E:/B/myArchive.tar就出来了。
package at4j;
import java.io.File;
import java.nio.charset.Charset;
import org.at4j.tar.builder.GnuTarEntryStrategy;
import org.at4j.tar.builder.TarBuilder;
import org.at4j.tar.builder.TarBuilderSettings;
import org.at4j.tar.builder.TarEntrySettings;
import org.entityfs.FileSystem;
import org.entityfs.RandomlyAccessibleFile;
import org.entityfs.el.AbsoluteLocation;
import org.entityfs.fs.FSRWFileSystemBuilder;
import org.entityfs.util.Directories;
public class TarDemo {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
FileSystem srcFS = new FSRWFileSystemBuilder().setName("FSRWFileSystem").setRoot(new File("E:/A")).create();
FileSystem destFS = new FSRWFileSystemBuilder().setName("FSRWFileSystem").setRoot(new File("E:/B")).create();
RandomlyAccessibleFile tarFile = Directories.newFile(destFS.getRootDirectory(), "myArchive.tar");
TarBuilderSettings settings = new TarBuilderSettings().setDefaultFileEntrySettings(
new TarEntrySettings()).setDefaultDirectoryEntrySettings(
new TarEntrySettings()).setEntryStrategy(new GnuTarEntryStrategy(Charset.forName("GBK")));
TarBuilder builder = new TarBuilder(tarFile, settings);
builder.addRecursively(srcFS.getRootDirectory(), new AbsoluteLocation("/"));
builder.close();
}
}