Java 检查给定路径上是否存在任何Zip文件

Java 检查给定路径上是否存在任何Zip文件,java,regex,zip,Java,Regex,Zip,我想检查指定路径上是否存在任何Zip文件。如果存在,那么我希望在同一路径上提取该文件 如何检查给定路径上是否存在任何Zip文件 如何检查给定路径上是否存在任何Zip文件 看 如何检查给定路径上是否存在任何Zip文件 请参见您可以尝试以下代码,该代码检查目录中文件的扩展名,如果存在Zip文件,则打印文件名 public static void main(String[] args) { // Directory path here String path = "."; Str

我想检查指定路径上是否存在任何Zip文件。如果存在,那么我希望在同一路径上提取该文件

如何检查给定路径上是否存在任何Zip文件

如何检查给定路径上是否存在任何Zip文件

如何检查给定路径上是否存在任何Zip文件


请参见

您可以尝试以下代码,该代码检查目录中文件的扩展名,如果存在Zip文件,则打印文件名

 public static void main(String[] args) 
{

  // Directory path here
  String path = "."; 

  String files;
  File folder = new File(path);
  File[] listOfFiles = folder.listFiles(); 

  for (int i = 0; i < listOfFiles.length; i++) 
  {

   if (listOfFiles[i].isFile()) 
   {
   files = listOfFiles[i].getName();
       if (files.endsWith(".rar") || files.endsWith(".zip"))
       {
          System.out.println(files);
        }
     }
  }
}
publicstaticvoidmain(字符串[]args)
{
//此处的目录路径
字符串路径=“.”;
字符串文件;
文件夹=新文件(路径);
File[]listOfFiles=folder.listFiles();
for(int i=0;i
如果您想使用Andrew Thompson告诉您的
FilenameFilter
,请不要这样做

您可以在类中实现FilenameFilter。 在这方面给予了更多的帮助。 这样你就不需要检查文件的扩展名了。 它将只提供那些扩展名作为参数传递的文件

要提取zip文件(如果找到),可以借助
ZipInputStream
包。
您可以查看以提取文件夹。

您可以尝试以下代码,该代码检查目录中文件的扩展名,如果存在Zip文件,则打印文件名

 public static void main(String[] args) 
{

  // Directory path here
  String path = "."; 

  String files;
  File folder = new File(path);
  File[] listOfFiles = folder.listFiles(); 

  for (int i = 0; i < listOfFiles.length; i++) 
  {

   if (listOfFiles[i].isFile()) 
   {
   files = listOfFiles[i].getName();
       if (files.endsWith(".rar") || files.endsWith(".zip"))
       {
          System.out.println(files);
        }
     }
  }
}
publicstaticvoidmain(字符串[]args)
{
//此处的目录路径
字符串路径=“.”;
字符串文件;
文件夹=新文件(路径);
File[]listOfFiles=folder.listFiles();
for(int i=0;i
如果您想使用Andrew Thompson告诉您的
FilenameFilter
,请不要这样做

您可以在类中实现FilenameFilter。 在这方面给予了更多的帮助。 这样你就不需要检查文件的扩展名了。 它将只提供那些扩展名作为参数传递的文件

要提取zip文件(如果找到),可以借助
ZipInputStream
包。
您可以查看提取文件夹的过程。

获取一个文件变量,检查director和ckeck中的所有文件,以获取.zip或.tar.gz或.rar

获取一个文件变量,检查director和ckeck中的所有文件,查找.zip或.tar.gz或.rar
测试您想要使用的任何资源的可用性的最佳方法就是尝试使用它。任何其他技术都容易受到时间窗口问题、批评您试图预测未来、双重编码等的影响。只需捕获尝试打开时发生的
FileNotFoundException
。不管怎样,您必须捕获它,为什么要编写两次相同的代码?

测试您想要使用的任何资源的可用性的最佳方法就是尝试使用它。任何其他技术都容易受到时间窗口问题、批评您试图预测未来、双重编码等的影响。只需捕获尝试打开时发生的
FileNotFoundException
。无论如何,您必须捕获它,为什么要编写两次相同的代码?

这将解压目录中的所有文件,但很容易修改为仅解压特定文件

package com.wedgeless.stackoverflow;

import java.io.*;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

/**
 * Unzips all zip files in a directory
 * @author mk
 */
public final class Unzipper
{
  public static final String DOT_ZIP = ".ZIP";
  public static final FilenameFilter DOT_ZIP_FILTER = new FilenameFilter()
  {
    @Override
    public boolean accept(File dir, String name)
    {
      return name.toUpperCase().endsWith(DOT_ZIP);
    }
  };

  public static void main(String[] args)
  {
    File dir = new File("/path/to/dir");
    Unzipper unzipper = new Unzipper();
    unzipper.unzipDir(dir);
  }

  public void unzipDir(File dir)
  {
    for (File file : dir.listFiles(DOT_ZIP_FILTER))
    {
      unzip(file);
    }
  }

  protected void unzip(File file)
  {
    File dir = getZipDir(file);
    try
    {
      dir.mkdirs();
      ZipFile zip = new ZipFile(file);
      Enumeration<? extends ZipEntry> zipEntries = zip.entries();
      while (zipEntries.hasMoreElements())
      {
        ZipEntry zipEntry = zipEntries.nextElement();
        File outputFile = new File(dir, zipEntry.getName());
        outputFile.getParentFile().mkdirs();
        if (!zipEntry.isDirectory())
        {
          write(zip, zipEntry, outputFile);
        }
      }
    }
    catch (IOException e)
    {
      dir.delete();
    }
  }

  protected void write(ZipFile zip, ZipEntry zipEntry, File outputFile)
    throws IOException
  {
    final BufferedInputStream input = new BufferedInputStream(zip.getInputStream(zipEntry));
    final int buffsize = 1024;
    final byte buffer[] = new byte[buffsize];
    final BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(outputFile), buffsize);
    try
    {
      while (input.available() > 0)
      {
        input.read(buffer, 0, buffsize);
        output.write(buffer, 0, buffsize);
      }
    }
    finally
    {
      output.flush();
      output.close();
      input.close();
    }
  }

  protected File getZipDir(File zip)
  {
    File dir = zip.getParentFile();

    int index = zip.getName().toUpperCase().lastIndexOf(DOT_ZIP);
    String zipPath = zip.getName().substring(0, index);
    File zipDir = new File(dir, zipPath);
    return zipDir;
  }
}
package com.wedgeless.stackoverflow;
导入java.io.*;
导入java.util.Enumeration;
导入java.util.zip.ZipEntry;
导入java.util.zip.ZipFile;
/**
*解压目录中的所有zip文件
*@author mk
*/
公开期末班
{
公共静态最终字符串DOT_ZIP=“.ZIP”;
public static final FilenameFilter DOT\u ZIP\u FILTER=new FilenameFilter()
{
@凌驾
公共布尔接受(文件目录,字符串名称)
{
返回name.toUpperCase().endsWith(DOT_-ZIP);
}
};
公共静态void main(字符串[]args)
{
File dir=新文件(“/path/to/dir”);
UNZIPLESS UNZIPLESS=新的UNZIPLESS();
unzippers.unzipDir(dir);
}
公共void unzipDir(文件目录)
{
for(文件:dir.listFiles(DOT\u ZIP\u过滤器))
{
解压(文件);
}
}
受保护的无效解压缩(文件)
{
File dir=getZipDir(文件);
尝试
{
dir.mkdirs();
ZipFile zip=新ZipFile(文件);

枚举这将解压目录中的所有文件,但很容易修改为仅解压特定文件

package com.wedgeless.stackoverflow;

import java.io.*;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

/**
 * Unzips all zip files in a directory
 * @author mk
 */
public final class Unzipper
{
  public static final String DOT_ZIP = ".ZIP";
  public static final FilenameFilter DOT_ZIP_FILTER = new FilenameFilter()
  {
    @Override
    public boolean accept(File dir, String name)
    {
      return name.toUpperCase().endsWith(DOT_ZIP);
    }
  };

  public static void main(String[] args)
  {
    File dir = new File("/path/to/dir");
    Unzipper unzipper = new Unzipper();
    unzipper.unzipDir(dir);
  }

  public void unzipDir(File dir)
  {
    for (File file : dir.listFiles(DOT_ZIP_FILTER))
    {
      unzip(file);
    }
  }

  protected void unzip(File file)
  {
    File dir = getZipDir(file);
    try
    {
      dir.mkdirs();
      ZipFile zip = new ZipFile(file);
      Enumeration<? extends ZipEntry> zipEntries = zip.entries();
      while (zipEntries.hasMoreElements())
      {
        ZipEntry zipEntry = zipEntries.nextElement();
        File outputFile = new File(dir, zipEntry.getName());
        outputFile.getParentFile().mkdirs();
        if (!zipEntry.isDirectory())
        {
          write(zip, zipEntry, outputFile);
        }
      }
    }
    catch (IOException e)
    {
      dir.delete();
    }
  }

  protected void write(ZipFile zip, ZipEntry zipEntry, File outputFile)
    throws IOException
  {
    final BufferedInputStream input = new BufferedInputStream(zip.getInputStream(zipEntry));
    final int buffsize = 1024;
    final byte buffer[] = new byte[buffsize];
    final BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(outputFile), buffsize);
    try
    {
      while (input.available() > 0)
      {
        input.read(buffer, 0, buffsize);
        output.write(buffer, 0, buffsize);
      }
    }
    finally
    {
      output.flush();
      output.close();
      input.close();
    }
  }

  protected File getZipDir(File zip)
  {
    File dir = zip.getParentFile();

    int index = zip.getName().toUpperCase().lastIndexOf(DOT_ZIP);
    String zipPath = zip.getName().substring(0, index);
    File zipDir = new File(dir, zipPath);
    return zipDir;
  }
}
package com.wedgeless.stackoverflow;
导入java.io.*;
导入java.util.Enumeration;
导入java.util.zip.ZipEntry;
导入java.util.zip.ZipFile;
/**
*解压目录中的所有zip文件
*@author mk
*/
公开期末班
{
公共静态最终字符串DOT_ZIP=“.ZIP”;
public static final FilenameFilter DOT\u ZIP\u FILTER=new FilenameFilter()
{
@凌驾
公共布尔接受(文件目录,字符串名称)
{
返回name.toUpperCase().endsWith(DOT_-ZIP);
}
};
公共静态void main(字符串[]args)
{
File dir=新文件(“/path/to/dir”);
UNZIPLESS UNZIPLESS=新的UNZIPLESS();
unzippers.unzipDir(dir);
}
公共void unzipDir(文件目录)
{
for(文件:dir.listFiles(DOT\u ZIP\u过滤器))
{
解压(文件);
}
}
受保护的无效解压缩(文件)
{
File dir=getZipDir(文件);
尝试
{
dir.mkdirs();
ZipFile zip=新ZipFile(文件);

枚举尝试在Try-Catch块中打开zip文件,如果打开成功,则该文件将存在,否则,它将进入Catch块:)检查此问题,您可以将其应用于您的问题:BTW-DYM 1特定存档,或给定路径下所有目录中的所有存档,或其他内容?尝试在Try-Catch块中打开zip文件,则它将打开成功的话就是exi