新建FileOutputStream 抛出IOException异常
try{Fileolddirec=newFile(unzipfile);ZipInputStreamzin=newZipInputStream(newFileInputS...
try {
File olddirec = new File(unzipfile);
ZipInputStream zin = new ZipInputStream(new FileInputStream(unzipfile));
ZipEntry entry;
while ( (entry = zin.getNextEntry()) != null){
if (entry.isDirectory()) {
File directory = new File(olddirec.getParent(), entry.getName());
if (!directory.exists())
if (!directory.mkdirs())
System.exit(0);
zin.closeEntry();
}
if (!entry.isDirectory()) {
File myFile = new File(entry.getName());
String ofile=file.replace(".zip", "");
File fo=new File(ofile);
if(!fo.exists()){
fo.mkdir();
}
File directory2 = new File(ofile+"/");
File file2 = new File(ofile+"/"+myFile.getPath());
FileOutputStream fout = new FileOutputStream(file2);
DataOutputStream dout = new DataOutputStream(fout);
byte[] b = new byte[1024];
int len = 0;
while ( (len = zin.read(b)) != -1) {
dout.write(b, 0, len);
}
dout.close();
fout.close();
zin.closeEntry();
staus=true;
}
}
}
catch (IOException e) {
e.printStackTrace();
}
说明:
每次执行到FileOutputStream fout = new FileOutputStream(file2);
时就抛出IOException异常,求指教。
其中e.dtailMessage显示open failed: ENOENT (No such file or directory),
于是添加了代码
if(!directory2.exists())
directory2.mkdir();//没有目录先创建目录
if(!file2.exists())
file2.createNewFile();
此时在file2.createNewFile();
时抛出异常,并且仍然提示为open failed: ENOENT (No such file or directory)。 展开
File olddirec = new File(unzipfile);
ZipInputStream zin = new ZipInputStream(new FileInputStream(unzipfile));
ZipEntry entry;
while ( (entry = zin.getNextEntry()) != null){
if (entry.isDirectory()) {
File directory = new File(olddirec.getParent(), entry.getName());
if (!directory.exists())
if (!directory.mkdirs())
System.exit(0);
zin.closeEntry();
}
if (!entry.isDirectory()) {
File myFile = new File(entry.getName());
String ofile=file.replace(".zip", "");
File fo=new File(ofile);
if(!fo.exists()){
fo.mkdir();
}
File directory2 = new File(ofile+"/");
File file2 = new File(ofile+"/"+myFile.getPath());
FileOutputStream fout = new FileOutputStream(file2);
DataOutputStream dout = new DataOutputStream(fout);
byte[] b = new byte[1024];
int len = 0;
while ( (len = zin.read(b)) != -1) {
dout.write(b, 0, len);
}
dout.close();
fout.close();
zin.closeEntry();
staus=true;
}
}
}
catch (IOException e) {
e.printStackTrace();
}
说明:
每次执行到FileOutputStream fout = new FileOutputStream(file2);
时就抛出IOException异常,求指教。
其中e.dtailMessage显示open failed: ENOENT (No such file or directory),
于是添加了代码
if(!directory2.exists())
directory2.mkdir();//没有目录先创建目录
if(!file2.exists())
file2.createNewFile();
此时在file2.createNewFile();
时抛出异常,并且仍然提示为open failed: ENOENT (No such file or directory)。 展开
2个回答
展开全部
FileOutputStream fout = new FileOutputStream(file2);
出错,应该是指定的路径找不到
比如你只有 D:\zip目录
你想解压出的目录是 D:\zip\a\b\c\test.txt这样
那中间的a\b\c目是不存在的。
创建出来就可以了
if(!file2.getParentFile().exists()){
file2.getParentFile().mkdirs();
}
这样,判断如果目录不存在创建 出来,再输出文件。
--------------------------------------------------------------------------------
打开失败,你的file2是什么,打出来看一下
出错,应该是指定的路径找不到
比如你只有 D:\zip目录
你想解压出的目录是 D:\zip\a\b\c\test.txt这样
那中间的a\b\c目是不存在的。
创建出来就可以了
if(!file2.getParentFile().exists()){
file2.getParentFile().mkdirs();
}
这样,判断如果目录不存在创建 出来,再输出文件。
--------------------------------------------------------------------------------
打开失败,你的file2是什么,打出来看一下
更多追问追答
追问
我刚调试看了下,在新建目录directory2.mkdir();的时候就返回的是false。
目录是"mnt/sdcard/ddtest/"。
追答
mkdir();只能建一层目录。
如果你是想建多用
mkdirs();
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询