Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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_File - Fatal编程技术网

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

我在用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

我的书桌上有一个凹痕,大小和我的额头差不多。

如果你发布的输出是实际输出:

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");
    }
}