2014-01-07 4 views
6

Ниже приведен путь к каталогу Windows. Обычно путь должен иметь \ вместо //, но оба, похоже, работают.Имена файлов для Windows и Linux

String WinDir = "C://trash//blah//blah";

же на пути Linux. Нормальная должна иметь a/вместо //. Фрагмент ниже и выше отлично работает и будет захватывать содержимое указанных файлов.

String LinuxDir = "//foo//bar//blah"

Таким образом, оба используют странные заявления путей к файлам, но и, кажется, работает хорошо. Разработка пожалуйста.

Например,

File file = new File(WinDir); file.mkdir();

+2

Лучше использовать File.separator http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html – gtgaxiola

+1

@gtgaxiola или вы можете использовать uri вместо имени файла => не os-specific , – assylias

+1

Отредактированный вопрос включить образец –

ответ

15

Обычно при указании пути к файлам на Windows, вы должны использовать обратную косую черту. Однако в Java и во многих других местах вне мира Windows обратные косые черты - это символ escape, поэтому вам нужно удвоить их. В Java пути Windows часто выглядят так: String WinDir = "C:\\trash\\blah\\blah";. С другой стороны, косые черты не нужно удваивать и работать как с Windows, так и с Unix. Нет никакого вреда в использовании двойной косой черты. Они ничего не делают на пути и просто занимают место (// равнозначно /./). Похоже, что кто-то просто переложил все обратные косые черты на косые черты. Вы можете удалить их. В Java есть поле под названием File.separator (строка) и File.separatorChar (символ), которые предоставляют вам правильный разделитель (/ или \), в зависимости от вашей платформы. Лучше использовать это в некоторых случаях: String WinDir = "C:" + File.separator + "trash" + File.separator + "blah" + File.separator + "blah";

+2

@SotiriosDelimanolis. Конечно. '//' равносилен '/./'. Это абсолютно правильная конструкция. Просто занимает место в строке. –

+0

Спасибо, это то, что мне было интересно все это время. –

+0

@SotiriosDelimanolis. Done –

-5

Двойная косая черта «//» в вашей строке делает ссылку на пустой каталог. Поэтому он говорит// emptydirectory/directory.

+5

Эта интерпретация не используется какой-либо операционной системой, с которой я когда-либо сталкивался. – duskwuff

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