Java Mkdir不';在尝试使用JTar解除tar时无法工作
我正在尝试实现一个文件解压缩功能。下面是我使用JTar编写的代码Java Mkdir不';在尝试使用JTar解除tar时无法工作,java,android,Java,Android,我正在尝试实现一个文件解压缩功能。下面是我使用JTar编写的代码 private void untar(String tarFile, String destFolder) throws IOException { TarInputStream tis = new TarInputStream(new BufferedInputStream(new FileInputStream(tarFile))); TarEntry entry;
private void untar(String tarFile, String destFolder) throws IOException {
TarInputStream tis = new TarInputStream(new BufferedInputStream(new FileInputStream(tarFile)));
TarEntry entry;
while (( entry = tis.getNextEntry() ) != null) {
System.out.println( "Extracting: " + entry.getName() );
int count;
byte data[] = new byte[2048];
if (entry.isDirectory()) {
new File( destFolder + "/" + entry.getName() ).mkdirs();
continue;
} else {
int di = entry.getName().lastIndexOf( '/' );
System.out.println("File"+di);
if (di != -1) {
File f = new File( destFolder + "/" + entry.getName().substring( 0, di ) );
if(f.mkdirs())
System.out.println(f.isDirectory());
}
}
FileOutputStream fos = new FileOutputStream( destFolder + "/" + entry.getName() );
BufferedOutputStream dest = new BufferedOutputStream( fos );
while (( count = tis.read( data ) ) != -1) {
dest.write( data, 0, count );
}
dest.flush();
dest.close();
}
tis.close();
}
当我点击mkdirs()部分并尝试创建目录时,它不会这样做,并且在if
语句之后,我在控制台上看不到任何输出
这可能是FileOutputStream的后续代码显示IOexception而不是目录的原因
我在任何地方都找不到此问题的解决方案。mkdirs()将返回true或false。您没有检查返回值并对其进行操作。此外,仅当目录尚不存在时才应调用mkdirs()。检查exists()。如果目录已经存在,mkdirs()将返回false。这就是为什么你不能像现在这样盲目地调用它。
关于android权限,我在AndroidManifests.xml中添加了这一点,所以这肯定不是问题,这是不够的。您还应该添加代码,在运行时要求用户确认这些权限。谷歌搜索运行时权限。如果无法创建目录,请停止或返回。尝试在不存在的目录中写入文件是没有意义的。暂时(作为快速测试),您可以在设备上转到应用程序的设置,并将存储权限切换为打开。