Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将文件从一个位置本地复制到另一个位置,并检查文件是否存在_Java - Fatal编程技术网

Java 将文件从一个位置本地复制到另一个位置,并检查文件是否存在

Java 将文件从一个位置本地复制到另一个位置,并检查文件是否存在,java,Java,我有将.zip文件从一个位置复制到另一个位置的代码。它按预期工作。 我想检查文件夹中是否存在复制的文件。如果是,则应继续,否则复制文件 我相信我的逻辑是正确的,但我不确定我错在哪里,因为它不检查文件是否存在 import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; public class ZipFileMover { public void findFiles(Fi

我有将.zip文件从一个位置复制到另一个位置的代码。它按预期工作。 我想检查文件夹中是否存在复制的文件。如果是,则应继续,否则复制文件

我相信我的逻辑是正确的,但我不确定我错在哪里,因为它不检查文件是否存在

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

public class ZipFileMover
{

  public void findFiles(File root, int depth)
      throws IOException
  {
    File[] listOfFiles = root.listFiles();
    for (int i = 0; i < listOfFiles.length; i++)
    {
      String iName = listOfFiles[i].getName();
      if (listOfFiles[i].isFile())
      {
        if (iName.endsWith(".zip"))
        {
          for (int j = 0; j < depth; j++)
          {}
          System.out.println("Files: " + iName);
          File dest = new File(
              "C:\\Users\\somename\\Documents\\Development\\ZipFiles\\"
                  + iName);

          String path = "C:\\Users\\somename\\Documents\\Development\\ZipFiles\\"
              + iName;

          // C:\Users\somename\Documents\Development\

          // System.out.println("ROOT + iNAME : " + (root + "\\" + iName));
          // //C:\Users\somename\Documents\Development\filename.zip

          boolean check = new File(dest, iName).exists();
          System.out.println(check);

          if ((root + "\\" + iName).equals(path))
          {
            continue;
          }
          else
          {
            if (check == true)
            {
              System.out.println(
                  "Skipped file " + iName + " it already exsits in folder.");
              continue;

            }
            else
            {
              System.out.println();
              System.out.println("Copying file " + iName);
              System.out.println();
              FileUtils.copyFile(new File(root + "\\" + iName), dest);
            }

          }
        }
      }
      else if (listOfFiles[i].isDirectory())
      {
        for (int j = 0; j < depth; j++)
          findFiles(listOfFiles[i], depth + 1);
      }
    }
  }
}
导入java.io.File;
导入java.io.IOException;
导入org.apache.commons.io.FileUtils;
公共类ZipFileMover
{
公共void findFiles(文件根,int深度)
抛出IOException
{
File[]listOfFiles=root.listFiles();
for(int i=0;i
确保使用IDE的调试功能,它将帮助您确定逻辑错误所在

旁注:不要添加比您绝对必须添加的更多的if和else。这会使代码难以理解,这会简化代码

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

public class ZipFileMover
{
  static String outputPath = "C:\\Users\\somename\\Documents\\Development\\ZipFiles\\";

  public void findFiles(File root, int depth)
      throws IOException
  {
    File[] listOfFiles = root.listFiles();
    for (int i = 0; i < listOfFiles.length; i++)
    {
      String iName = listOfFiles[i].getName();
      if (listOfFiles[i].isFile() && iName.endsWith(".zip"))
      {
        System.out.println("Files: " + iName);
        File dest = new File(outputPath + iName);
        if (dest.exists())
        {
          System.out.println(
              "Skipped file " + iName + " it already exsits in folder.");
          continue;
        }
        else if ((root + "\\" + iName).equals(dest))
        {
          continue;
        }
        else
        {
          System.out.println();
          System.out.println("Copying file " + iName);
          System.out.println();
          FileUtils.copyFile(listOfFiles[i], dest);
        }
      }
      else if (listOfFiles[i].isDirectory())
      {
        for (int j = 0; j < depth; j++)
          findFiles(listOfFiles[i], depth + 1);
      }
    }
  }
}
导入java.io.File;
导入java.io.IOException;
导入org.apache.commons.io.FileUtils;
公共类ZipFileMover
{
静态字符串outputPath=“C:\\Users\\somename\\Documents\\Development\\ZipFiles\\”;
公共void findFiles(文件根,int深度)
抛出IOException
{
File[]listOfFiles=root.listFiles();
for(int i=0;i
为什么在使用j作为增量的第二个for循环中,没有任何内容?我想检查
iName
是否存在于
dest
中。。Plus
文件
需要两个参数。它不能只处理一个文件。文件只存储路径和存在方法检查此路径中的文件是否存在。测试一下。您还可以使用:
boolean check=new File(“C:\\Users\\somename\\Documents\\Development\\ZipFiles\‌​\", 存在();
。我将答案更改为干净谢谢你的提示,但是当我运行你的代码时,它返回我
java.io.IOException:Destination'C:\Users\somename\Documents\Development\ZipFiles'目录无法创建
错误。我不确定它为什么会这样做。对此的任何了解都会有所帮助。堆栈跟踪将对UL,你确定你可以做一个新的用户文件夹,叫做“代码> SoMeNe<代码>吗?从简化你的输出开始到你知道你有权限的现有目录。对不起,我忘了更新我的评论。我想,是的,我忘了把名字改成需要的名字。很高兴为你服务,请考虑ACCEP。如果您觉得我的答案非常有用,请点击此处,祝您愉快。另外,请确保您看到了“复制文件”行中的“我的编辑”,因为您不应该在已对要复制的源文件进行了引用的情况下创建另一个文件。
import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

public class ZipFileMover
{
  static String outputPath = "C:\\Users\\somename\\Documents\\Development\\ZipFiles\\";

  public void findFiles(File root, int depth)
      throws IOException
  {
    File[] listOfFiles = root.listFiles();
    for (int i = 0; i < listOfFiles.length; i++)
    {
      String iName = listOfFiles[i].getName();
      if (listOfFiles[i].isFile() && iName.endsWith(".zip"))
      {
        System.out.println("Files: " + iName);
        File dest = new File(outputPath + iName);
        if (dest.exists())
        {
          System.out.println(
              "Skipped file " + iName + " it already exsits in folder.");
          continue;
        }
        else if ((root + "\\" + iName).equals(dest))
        {
          continue;
        }
        else
        {
          System.out.println();
          System.out.println("Copying file " + iName);
          System.out.println();
          FileUtils.copyFile(listOfFiles[i], dest);
        }
      }
      else if (listOfFiles[i].isDirectory())
      {
        for (int j = 0; j < depth; j++)
          findFiles(listOfFiles[i], depth + 1);
      }
    }
  }
}