我在用Java编写的程序中遇到了障碍。该程序基本上将来自多个位置的文件夹和文件复制到一个文件夹中,以便更轻松地从计算机上的多个位置备份代码。我遇到的问题是我不想复制特定文件夹,在本例中为“workspace/.metadata
”。我遇到问题的代码的开头如下:
public void copyFolder(File in, File out, String loc)
throws IOException{
String check = in.getName().substring(1);
System.out.println("loc:"+loc+"check: "+check);
if(loc.equals("java")){
if(check.equals("metadata")){
System.out.println("failboat");
//statusBox.append("failboat");
}
}
这是我看到的结果:
loc:java
check: orkspace2
loc:java
check: metadata
loc:java
check: lock
我已经看过其他代码并且他们同意它应该有效。我甚至在测试文件中创建了代码的副本:
String test = "fmetadata";
String loc = "java";
String check = test.substring(1);
if(loc.equals("java")){
if(check.equals("metadata")){
System.out.print("failboat");
}else{
System.out.println("WTF");
System.out.print(test+ ": :"+check);
}
}
结果呢?
failboat
我的办公桌前面有一个凹痕,试图弄明白这一点。
答案 0 :(得分:1)
如果您发布的输出是实际输出:
loc:java
check: orkspace2
loc:java
check: metadata
loc:java
check: lock
它与您粘贴的代码不匹配,因为您不会在这两个项目之间打印换行符:
System.out.println("loc:"+loc+"check: "+check);
如果这是你所看到的真正的代码,那么我会说问题是loc
最后有一个流浪换行符,而实际上是“java \ n”而不是“java”期望。因此,在调用该函数之前,您应该返回并检查如何生成通过loc
开始的值。
如果是这种情况,那么一些有关诊断改进的建议可以帮助您更快地发现这些问题(除了逐步使用调试器):
// quote your strings to spot whitespace, print length to spot unexpected
// unprintable characters.
System.out.println("loc: \""+loc+"\" "+loc.length());
System.out.println("check: \""+check+"\" "+check.length());
和
if(loc.equals("java")){
// make sure you're getting to this point, don't assume that the first
// if condition was satisfied:
System.out.println("grumpycat"); // <----
if(check.equals("metadata")){
System.out.println("failboat");
}
}