1、第一种方式,打开到bin目录,下面有java.exe可执行文件,然后打开cmd黑窗口,执行cdjdk/bin文件夹路径,即可使用java指令。
2、在eclipse或者idea工具中添加jdk路径可以直接使用。
file.mkdirs()只有目录才要创建文件夹,如果这个file本应该是文件,你却创建了一个同名文件夹,那自然不能再创建这个文件了(即后面的file.createNewFile()无法创建文件).
另外,对于文件其实是不需要createNewFile的,因为如果你真要解压文件,你要打开对应文件流,并且创一个输出流,输出到目标文件中(这个文件会自动创建的),但你的代码里面没看到这个步骤,给你个完整的解压示例.
import java.io.Fileimport java.io.FileOutputStream
import java.io.IOException
import java.io.InputStream
import java.io.OutputStream
import java.util.Enumeration
import java.util.zip.ZipEntry
import java.util.zip.ZipFile
public class Test
{
public static void unZipFiles(String zipPath, String descDir) throws IOException
{
unZipFiles(new File(zipPath), descDir)
}
public static void unZipFiles(File zipFile, String descDir) throws IOException
{
File pathFile = new File(descDir)
if (!pathFile.exists())
{
pathFile.mkdirs()
}
ZipFile zip = new ZipFile(zipFile)
for (Enumeration entries = zip.entries() entries.hasMoreElements())
{
ZipEntry entry = (ZipEntry) entries.nextElement()
String zipEntryName = entry.getName()
InputStream in = zip.getInputStream(entry)
String outPath = (descDir + zipEntryName).replaceAll("\\*", "/")
//获取当前file的父路径,这才是文件夹
File file = new File(outPath.substring(0, outPath.lastIndexOf('/')))
// 判断路径是否存在,不存在则创建文件路径
if (!file.exists())
{
file.mkdirs()
}
// 判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
if (new File(outPath).isDirectory())
{
continue
}
// 输出文件路径信息
System.out.println(outPath)
OutputStream out = new FileOutputStream(outPath)
byte[] buf1 = new byte[1024]
int len
while ((len = in.read(buf1)) > 0)
{
out.write(buf1, 0, len)
}
in.close()
out.close()
}
System.out.println("******************解压完毕********************")
}
public static void main(String[] args) throws Exception
{
unZipFiles(new File("d:/test.zip"), "e:/")
}
}
我觉得你的步骤有问题,tar.gz压缩包里放文件或文件夹都无所谓,需要用程序来生成,下面详细说明:1.
用程序中的方法【archive】生成tar压缩文件
2.
用程序中的方法【compressArchive】生成tar.gz压缩文件
3.
将生成的压缩文件为参数进行解压,具体是:
unCompressArchiveGz("d:\\test\\xmlbak.tar.gz")//解压
4.
查看解压后的文件夹内容和文件内容,均可以正常显示访问
楼主的问题主要是手动生成了一个压缩文件,这是主要的问题原因。