2014-12-12 2 views
2

Я пытаюсь воссоздать структуру папок в системе Windows с помощью JAVA-программы. Я получаю предполагаемый путь к файлу из другой системы как аргумент String в моей java-программе и должен spilit filepath String для идентификации имен папок на каждом уровне. «\» (часть строки пути файла в системах Windows) при использовании вместе с другими допустимыми символами в строке ведет себя по-разному. Он объединяется со следующими символами в строке и производит разные результаты (генерирует разные символы, потому что значение ascii \ 00 отличается от значения \ отдельно и 0 отдельно).Невозможно использовать строку с символом «» с помощью JAVA

String WindowsFilePath="drivename\folderName1\00000innerFolderName\03thefileName.fileExtension"; 

Есть возможность spilit этой строки с помощью кода JAVA для

"drivename","folderName1","00000innerFolderName","03thefileName.fileExtension" 

Дополнительной информации о первопричине этого вопроса:

У меня есть старая структура каталога, в котором кто-то создал папку с такими именами, как '001thImageFolder' 'firstImageFolder' и т. Д. В файловой системе. Теперь, если я получаю путь к файлу, который находится внутри каталога, указанного выше, «\», который входит в путь к файлу, добавляется с первым или первым и вторым символами имени папки и автоматически преобразуется в escape-последовательность. Я хочу исключить это преобразование escape-последовательности.

+0

вместо написания \ вам нужно написать \\ – EpicPandaForce

+1

, но вы могли бы просто использовать 'File.separator' и добавить, что вместо – EpicPandaForce

+0

@EpicPandaForce да согласен. У меня есть escapesequences в моей строке. Но введение «\\» вместо «\» в этой строке не в моей руке. Я получаю подачу к моей javaprogram с такой строкой. Так есть ли способ сделать это с помощью java? – gowthamvelusamy

ответ

5

В вашей строке нет обратных косых черт.

Только бежать последовательности:

  • \f = форма подачи символов
  • \0 = NUL полукокса (шестнадцатеричный ноль)

Однако, если вы сделал имеют обратную косую черту:

String parts = str.split("\\\\"); 

Обратите внимание на двойную двойную обратную косую черту; удвоился один раз, чтобы создать один символ обратной косой черты в строковом литерале, и снова удвоил , чтобы создать литеральную обратную косую черту в regex.


Я думаю, что ваше намерение для строкового литерала быть:

String windowsFilePath ="drivename\\folderName1\\00000innerFolderName\\03thefileName.fileExtension"; 
+1

@thomas на самом деле это более трагично, чем это - см. Отредактированный ответ – Bohemian

+0

да, это мое намерение. Как изменить 'String WindowsFilePath = "managedame \ folderName1 \ 00000innerFolderName \ 03thefileName.fileExtension";' to 'String windowsFilePath = "managedame \\ folderName1 \\ 00000innerFolderName \\ 03thefileName.fileExtension";' – gowthamvelusamy

Смежные вопросы