2016-08-25 3 views
2

나는 자바로 작성한 프로그램에서 도로 블록을 쳤다. 이 프로그램은 기본적으로 폴더 및 파일을 여러 위치에서 하나의 폴더로 복사하여 컴퓨터의 여러 위치에있는 코드를 쉽게 백업합니다. 내가 가지고있는 문제는 특정 폴더 (이 경우 "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

이 글을 게시 한 직후에 새 줄 이스케이프 시퀀스가 ​​발견되었습니다. 감사 – Sean

답변

1

당신이 게시 그 출력은 실제 출력 인 경우 :

System.out.println("loc:"+loc+"check: "+check); 
: 당신이 두 항목 사이에 줄 바꿈을 인쇄하지 않는

loc:java 
check: orkspace2 
loc:java 
check: metadata 
loc:java 
check: lock 

그것은 당신이 붙여 넣은 코드와 일치하지 않습니다

이 코드로 볼 수 있다면 실제로 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"); 
    } 
}