Java 目录副本的else块出错

Java 目录副本的else块出错,java,if-statement,Java,If Statement,我一辈子都搞不清楚我在这里错过了什么。我在else块中遇到错误。我尝试了所有括号的变化,但似乎无法使其工作。我需要一些新的眼睛来发现我的错误!有什么想法吗 public static void makeCopies (File srcFolder, File destDirectory)throws Exception { if (srcFolder.isDirectory()) { destDirectory.mkdir(); System.out.pri

我一辈子都搞不清楚我在这里错过了什么。我在else块中遇到错误。我尝试了所有括号的变化,但似乎无法使其工作。我需要一些新的眼睛来发现我的错误!有什么想法吗

 public static void makeCopies (File srcFolder, File destDirectory)throws Exception
{

    if (srcFolder.isDirectory())

   {

    destDirectory.mkdir();
    System.out.println("Directory copied from" +srcFolder + " to " +destDirectory);

   }

    String files[] = srcFolder.list();

    for (String file : files)

   {
    File srcFile = new File(srcFolder, file);
    File destFile = new File(destDirectory, file);
    //recursive copy
    makeCopies(srcFolder, destDirectory);
   }


 else {


   FileInputStream sourceStream = new FileInputStream(srcFolder);
   FileOutputStream destStream = new FileOutputStream(destDirectory);

    // use an integer to transfer data between files
   int transfer;

    // tell the user what is happening
   System.out.println("begining file copy:");
   System.out.println("\tcopying " + srcFolder);
   System.out.println("\tto      " + destDirectory);

    // read a byte, checking for end of file (-1 is returned by read at EOF)
   while ((transfer = sourceStream.read()) != -1) {

        // write a byte 
        destStream.write(transfer);

    } // end while

    // close file streams 
    sourceStream.close();
    destStream.close();

    System.out.println("File copy complete.");

}

您没有在else块或method块上关闭大括号。

您的
else
未附加到任何
if
。假设它应该是方法顶部的
if
else
,只需在结束
if
块后立即将
else{
行向上移动即可

if (srcFolder.isDirectory())
{
   destDirectory.mkdir();
   System.out.println("Directory copied from" +srcFolder + " to " +destDirectory);
}
else {  // Move it here

   String files[] = srcFolder.list();

或者,如果以
String files[]=srcFolder.list();
开头的代码(如果
if
块位于当前结尾之后)是
if
的一部分,则移动关闭
if
}一直到
else

if
块的末尾和
else
块之间,您有所有这段代码:

if
{
  ...
}

String files[] = srcFolder.list();
for (String file : files)
{
    File srcFile = new File(srcFolder, file);
    File destFile = new File(destDirectory, file);
    //recursive copy
    makeCopies(srcFolder, destDirectory);
}

else
{
  ...
}
这不是java(或任何类似C语言)中if语句的正确结构

必须是这样的:

if(condition) {
 ....
} else {
 ....
}

您的
for
循环在
if
块之外,因此您编写的
else
似乎是
for
循环的一部分。您还缺少
else
块的关闭
}

if (srcFolder.isDirectory())
{
   destDirectory.mkdir();
   System.out.println("Directory copied from" +srcFolder + " to " +destDirectory);
}
else {  // Move it here

   String files[] = srcFolder.list();
您现在拥有的:

if(){

}

for(){

}

else{
    // this isn't attached to the if block...
}
你应该拥有:

if(){
    // for loop can go here
}else{
    // or here
}

}其他
。。。。。。。if块完成后,编写代码,然后进行for循环,然后是一个没有if连接的else。else块没有连接到相应的if块,因为它是I get if with else。如果我尝试}else{我得到非法的类型开头。@jpw不知道为什么。认为我的语法是正确的。你能澄清一下吗?@MichaelJames其他人已经在答案中指出了错误和解决方法。