2015-07-09 4 views
0
private static final String BasePath = "/home/rafael/pesquisa/ImageSimilarity"; 

Я работаю над программой сравнения изображений, и я нашел эту строку кода откуда-то. Однако в приведенном выше случае путь устанавливается для системы linux и как пользователь Windows, я хочу установить свой путь для устройства Windows. Таким образом, я изменил путь кСохранение пути в строке

private static final String BasePath ="C:\imgs" 

Однако, кажется, ошибка, и я предполагаю, что это с слэш и обратной косой черты. Как установить строку пути в моем случае? Любая помощь будет оценена.

+6

Вы можете использовать слэш в окнах, а также. Используйте 'C:/imgs'. Или избегайте обратной косой черты, добавляя еще одну обратную косую черту. «\» - это экранирующий символ для строк в Java. Поэтому 'C: \\ imgs' должен это делать. – kevcodez

+0

даст тот же результат, что и C: \ imgs? – OBX

+2

Соглашения об именах: вы должны назвать константу, такую ​​как BASE_PATH – Kuchi

ответ

3

Вы должны избежать обратной косой черты в вашем пути окна, например, так:

private static final String BasePath = "C:\\imgs"; 

Вы также можете просто использовать forwardslash:

private static final String BasePath = "C:/imgs"; 
1

Вы должны изменить

private static final String BasePath ="C:\imgs" 

до

private static final String BasePath ="C:\\imgs" 

Единственный символ \ является escape-символом и вызывает проблему «Недопустимый escape-символ», это потому, что \ i, как ожидается, является листом-побегом. (Который, к счастью, это не так). \\ Является ли действительный литерал исключения для единственного \, и, таким образом, он решает проблему.

Продолжая проблемной ситуации, если у вас, например

String path = "c:\noproblem"; 

Тогда нет никакой проблемы компиляции, так как \ п является допустимым символом спасения. (Но это все равно вызовет другие проблемы.)

Но что еще лучше, используйте File.separator.

От Java Documentation

символов имя-разделитель по умолчанию определяется системное свойство File.separator, и предоставляется в общественных статических полей сепараторов и separatorChar этого класса. Когда строка имени пути преобразуется в абстрактный путь, имена внутри нее могут быть , разделенные символом-разделителем по умолчанию или любым другим символом-разделителем , который поддерживается базовой системой.

Таким образом - это изменит использование seperator, требуемое операционной системой.

Посмотрите How to construct a file path in java

0

Ваша вещь должна работать при использовании

private static final String BasePath = "C:\\imgs"; 

Примечание:

Хотя вы все еще можете использовать косую черту для этой работы, я хотел бы предложить вам используйте для File.separator, чтобы сделать это понятным.

1

Вы можете использовать File.separator, а затем вам не нужно беспокоиться о разделителях конкретных платформ. например ниже

private static final String BASE_PATH = "C:" + File.separator + "imgs"; 

Более подробную информацию можно найти here

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