2011-09-26 8 views
0

MySQL 데이터베이스에 CSV 파일을 가져옵니다. 이것은 파일 경로에서 슬래시에 java.mysql을 사용하여 수행 할 수 있습니다. 사용자가 경로를파일 경로에서 백 슬래시 뒤에 't'나 다른 알파벳이나 문자를 이스케이프 문자로 바꾸려면 java에서 슬래시를 사용 하시겠습니까?

String filepath=" c:\upload\date\csv\sample.csv"; 

사항을 제공 할 경우, 우리는 코드의 다음 줄을 사용하여 '/''\'를 대체하여 그것을 할 수 있습니다.

String filepath2=filepath.replace("\\","/"); 

하지만

String filepath=" c:\test.csv"; 

다음과 같이 사용자로 들어갈 때 '\' 같은 '\' 유지하지 않는 파일 경로에 '\'"/"

으로 "\\" 교체 할 수없는 기능을 대체는 't 이어진다 '로 바뀌면 '\t' 이스케이프 문자가됩니다. 이러한 유형의 문제는 각각의 모든 이스케이프 시퀀스와 함께 발생합니다.

c:/test.csv 

어떻게 그 수행됩니다

내가 경로에 백 슬래시를 검색하고 슬래시로 교체 할

이 제공하는? 이 문제를 해결하는 방법? 당신이 JFileChooser를 통해 값을 취득하는 경우

+0

당신이 설명하는 것이 도움이되지 않습니다. '\ t'에서 TAB까지 일찍 일어나서 문자열에 나타나지 않습니다. – glglgl

+1

가능한 [자바에서 파일 경로의 백 슬래시와 자동 생성 된 이스케이프 문자를 이스케이프하는 방법] (http://stackoverflow.com/questions/7553634/how-to-escape-the-backslashes-and-the-automatically) -generated-escape-character-in) –

+1

경로를 입력하는 * 사용자 *와 Java 소스 코드에 나타나는 경로를 구별해야합니다. 나는 사용자가 소스 코드를 작성하고 있는지 의심 스럽다. –

답변

4

은, 그것은 더 같이 될 것입니다 :

String value = "c:\\test.csv"; // This really only has a single backslash 

하지만 슬래시와 함께 백 슬래시를 교체 할 필요가 없습니다. 내 같음은 생성중인 SQL에 값을 직접 포함하고 있다는 것입니다. 은 수행하지 않습니다.. 대신 매개 변수가있는 준비된 문을 사용하면 문제가 그냥 사라지는 것을 알 수 있습니다 ... 그리고 갑자기 SQL 주입 공격에 취약하지 않게됩니다 ...

정말로 실제로는이 필요합니다.

String newValue = oldValue.replace("\\", "/"); 

을 ...하지만 당신은 이 작업을 수행 할 필요가 없습니다한다 : 슬래시를 전달하는 백 슬래시를 변환, 당신은 사용할 수 있습니다.

+0

안녕하세요 선생님!실제로 JFileChooser에서 가져 오는 경로는 JtextField에 표시되고 String 객체에 저장되며 String 파일을 로컬 파일 쿼리의 Load 데이터에서 직접 사용합니다. 그래서 't'앞에 역 슬래시가 하나 있기 때문에 당신이 언급 한 경로에 문제가 있습니다. 문자열 객체의 경로에는 백 슬래시가 하나만 있습니다. 그래서 함수를 대체하는 두 개의 백 슬래시로 바꾸려고했지만 실패합니다. –

+0

@ Param-Ganak : * 왜 * 하나의 백 슬래시를 2 개로 바꾸시겠습니까? 그것은 그대로되어야합니다. 문제는 코드를 사용하고있는 문자열과 비슷하지만 해당 코드가 무엇인지 알려주지 않았거나 문제의 원인을 알려줍니다. –

관련 문제