Java 目录副本的else块出错
我一辈子都搞不清楚我在这里错过了什么。我在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
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其他人已经在答案中指出了错误和解决方法。