Java 将文件名与字符串进行比较
我在用Java编写的程序中遇到了一个障碍。该程序基本上将多个位置的文件夹和文件复制到一个文件夹中,以便更轻松地备份计算机上多个位置的代码。我的问题是我不想复制特定的文件夹,在本例中为“Java 将文件名与字符串进行比较,java,file,Java,File,我在用Java编写的程序中遇到了一个障碍。该程序基本上将多个位置的文件夹和文件复制到一个文件夹中,以便更轻松地备份计算机上多个位置的代码。我的问题是我不想复制特定的文件夹,在本例中为“workspace/.metadata”。我遇到问题的代码的开头如下: public void copyFolder(File in, File out, String loc) throws IOException{ String check = in.getName().sub
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
我的书桌上有一个凹痕,大小和我的额头差不多。如果你发布的输出是实际输出:
loc:java
check: orkspace2
loc:java
check: metadata
loc:java
check: lock
它与您粘贴的代码不匹配,因为您没有在两个项目之间打印换行符:
System.out.println("loc:"+loc+"check: "+check);
如果这确实是您在该代码中看到的,那么我想说的问题是,loc
的末尾有一个不连贯的换行符,实际上是“java\n”,而不是您所期望的“java”。因此,在调用该函数之前,您应该返回并检查如何生成通过loc
传递的值
如果是这种情况,请提供一些诊断改进建议,以帮助您更快地注意到此类问题(除了使用调试器外): 以及:
if(loc.equals(“java”)){
//确保你达到了这一点,不要认为第一个
//如果条件得到满足:
System.out.println(“grumpycat”);//发布此消息后不久,我发现了换行符转义序列。谢谢
// 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");
}
}