복붙노트

[HADOOP] 경로에서 사용하려면 자바에서 슬래시를 이스케이프하는 방법

HADOOP

경로에서 사용하려면 자바에서 슬래시를 이스케이프하는 방법

자바를 사용하여 경로에서 사용할 수있는 String에서 슬래시를 피하려고합니다. 예를 들면 다음과 같습니다. String :: "Test / World"

이제 위의 문자열 경로를 사용하고 싶습니다. 같은 시간에 "Test / World"가 경로에 있는지 확인해야합니다. 죄송하지만 복제본이 있지만 만족스러운 해결책을 찾지 못했습니다.

내 목적은 사육사에서 노드를 만들려면 위의 문자열을 사용하는 것입니다. 예: 다음 문자열을 사용하여 Zokkeeper에서 노드를 만들면 별도의 노드가 아닌 단일 노드로 "Test / World"를 가져와야합니다. 사육사는 경로 구분자로 "/"를 사용합니다. 어떤 경우에는 필요하지 않습니다.

/ 동물원 / Hello World / 테스트 / 월드

감사

해결법

  1. ==============================

    1.File.separator에 대해 알아야합니다 ... 이것은 Linux 및 Windows가 다른 파일 분리자를 사용하기 때문에 \ 또는 /보다 안전합니다. File.separator를 사용하면 JVM의 포인트 인 실행중인 플랫폼에 관계없이 프로그램을 실행할 수 있습니다. - 슬래시가 작동하지만 File.separator를 사용하면 최종 사용자가 더 확신 할 수 있습니다.

    File.separator에 대해 알아야합니다 ... 이것은 Linux 및 Windows가 다른 파일 분리자를 사용하기 때문에 \ 또는 /보다 안전합니다. File.separator를 사용하면 JVM의 포인트 인 실행중인 플랫폼에 관계없이 프로그램을 실행할 수 있습니다. - 슬래시가 작동하지만 File.separator를 사용하면 최종 사용자가 더 확신 할 수 있습니다.

    그리고 당신은 도망 갈 필요가 없습니다. "/ ...이 질문에 대한 답을보아야합니다.

    String fileP = "Test" + File.separator + "World";
    
  2. ==============================

    2.자바에서 문자를 이스케이프하기 위해 "\" 예 :

    자바에서 문자를 이스케이프하기 위해 "\" 예 :

    String strPath = "directory\\file.txt".
    

    나는 당신이 다음과 같은 슬래시를 벗어날 필요가 없다고 생각합니다 : "/"

  3. ==============================

    3.귀하의 질문에 대해 다시 말해 보겠습니다. 사육사에 노드를 만들려고하는데 / zookeeper / HelloWorld / NodeName이어야합니다. 하지만 마지막 부분 인 "NodeName"은 실제로 "Test / World"이며 노드 이름이 "Test / World"가되도록 "/"를 이스케이프하는 방법을 찾고 있습니다.

    귀하의 질문에 대해 다시 말해 보겠습니다. 사육사에 노드를 만들려고하는데 / zookeeper / HelloWorld / NodeName이어야합니다. 하지만 마지막 부분 인 "NodeName"은 실제로 "Test / World"이며 노드 이름이 "Test / World"가되도록 "/"를 이스케이프하는 방법을 찾고 있습니다.

    당신이 유니 코드로 시도하지 않았다면, 나는 그것이 챠일을 탈출하는 것으로 생각하지 않는다.

    /에 해당하는 \ u002F를 시도하십시오.

  4. ==============================

    4.나는 사육사에 대해 아무것도 모른다. 하지만 "Zookeeper", "HellowWorld", "Test / World"와 같은 문자열 목록을 유지하려고하는 것처럼 저에게 보입니다. 그러면 Zookeeper 노드를 만들거나 Zookeeper 노드에서 경로 이름을 만들 때 사용할 수 있습니다. 파일 시스템. (필자는 파일 시스템으로 작업하는 경우 Test 서브 디렉토리에 Test라는 서브 디렉토리와 World라는 파일 또는 서브 디렉토리가있을 것이라고 가정하고 있습니다. 실제로 하나의 파일 또는 디렉토리를 작성하려는 경우 Test / World, 포기하십시오 .Linux와 Windows 모두 당신과 싸울 것입니다.)

    나는 사육사에 대해 아무것도 모른다. 하지만 "Zookeeper", "HellowWorld", "Test / World"와 같은 문자열 목록을 유지하려고하는 것처럼 저에게 보입니다. 그러면 Zookeeper 노드를 만들거나 Zookeeper 노드에서 경로 이름을 만들 때 사용할 수 있습니다. 파일 시스템. (필자는 파일 시스템으로 작업하는 경우 Test 서브 디렉토리에 Test라는 서브 디렉토리와 World라는 파일 또는 서브 디렉토리가있을 것이라고 가정하고 있습니다. 실제로 하나의 파일 또는 디렉토리를 작성하려는 경우 Test / World, 포기하십시오 .Linux와 Windows 모두 당신과 싸울 것입니다.)

    그렇다면 "경로"를 프로그램에서 전달하는 간단한 문자열로 나타내지 마십시오. 대신 String [] 또는 ArrayList 으로 표현한 다음 파일 시스템 경로 이름이 필요할 때만 파일 시스템 경로 이름으로 변환하십시오. 또는 더 나은 방법은 getFilesystemPath 메소드를 사용하여 클래스를 정의하는 것입니다. 너무 빨리 노드 이름 목록을 경로 이름 문자열로 변환 한 다음 나중에 문자열에서 목록을 재구성하려고하면 나중에 필요한 데이터를 버리게되므로 잘못된 방법입니다 (특히, / 문자는 분리 기호이고 어느 것이 노드 이름의 일부인지).

    편집 : 다른 동물원에 대한 단일 경로 이름이 필요하면 다른 의견에서 언급 한 것처럼 동물원을 모르거나 문서를 빨리 ​​찾지 못해서 도울 수 없습니다. Zookeeper에서 슬래시를 벗어날 수있는 방법이 있다면 getFilesystemPath 메서드와 getZookeeperPath 메서드를 사용하여 클래스를 직접 정의하는 것이 좋습니다. 두 메서드가 특정 경우에 서로 다른 String을 반환하기 때문입니다. 클래스는 내부적으로 이름을 배열 또는 ArrayList로 유지합니다.

  5. ==============================

    5.우리는 똑같은 문제 (사육사의 노드 이름과 같은 파일 시스템 경로 사용)를 해결하려고 노력하고 있습니다. 노드 이름에 '/'를 갖는 방법을 찾지 못했습니다.

    우리는 똑같은 문제 (사육사의 노드 이름과 같은 파일 시스템 경로 사용)를 해결하려고 노력하고 있습니다. 노드 이름에 '/'를 갖는 방법을 찾지 못했습니다.

    해결 방법은 '/'를 노드 이름에 표시 할 수없는 문자로 바꾸는 것입니다. 경로가 '/'또는 '\ 0'일 경우,이 경우에는 도움이되지 않습니다.

    다른 가능성은 '/'를 노드 이름에 허용 된 문자열로 대체하는 것입니다 (예 : "Test / World"-> "Test % @ World", "Test % World"-> "Test %% World"를 선택하고 저장 및로드에 이스케이프 / 탈출을 추가하십시오.

    더 간단한 방법이 있다면, 나는 그것을 듣고 싶습니다.

  6. from https://stackoverflow.com/questions/24643025/how-to-escape-forward-slash-in-java-so-that-to-use-it-in-path by cc-by-sa and MIT license