2010-02-25 3 views
0

Я пытаюсь обратиться к местоположению на моем компьютере, однако Java говорит мне, что у меня неправильный синтаксис.Ссылка на файл, что такое правильный синтаксис

Правильно ли это?

File newlyUploadedFile = new File("D:\\" + fileName);

Дело в том, файл получает правильно загружен в папку, я хочу, чтобы идти, но я получаю ошибку:

java.io.IOException: The filename, directory name, or volume label syntax is incorrect

+0

Единственный слэш, который вы видели ранее, должен был быть двойной косой чертой. – Ankur

+1

Вам нужно опубликовать всю функцию. Прямо сейчас нам неизвестно, где ваш код поступил неправильно. – futureelite7

ответ

6

Побег ваши слеша ява строк, всегда.

File newlyUploadedFile = new File("D:\\" + fileName); 

Ошибка IOException вызвана тем, что система не находит файл, указанный вами в имени файла. Попробуйте добавить

newlyUploadedFile.exists(); 

и посмотреть, что он вернет. Если ваш путь возвращает false, вы ошибаетесь в имени файла.

+0

Я не думаю, что это проблема. Отсутствие escape-кода в строковом литерале приведет к ошибке компиляции Java, а не исключению IOException. –

+0

да, я тоже это заметил. Однако отсутствие косой черты, безусловно, вызовет проблемы с этим путем. – futureelite7

+0

@ futureelite7 - вы делаете предположения. Мы не знаем, что на самом деле содержит 'fileName'. Что, если он (уже) начинается с '\\'? –

3

Во-первых, код, представленный в вопросе, не будет компилироваться. Но так как вы видели IOException, у вас явно работает другой код.

Чтобы получить исключение IOException, связанное с синтаксисом pathname, на самом деле должно быть что-то не так с pathname. Что на самом деле дает вам "D:\\" + fileName? Добавьте звонок в System.err.println(...), чтобы узнать, что это такое.

+0

Спасибо, я попробую это ... но почему это не скомпилируется - я старался быть кратким и не отдавал весь код. Но я не понимаю, почему бит, который я дал, не будет компилироваться. – Ankur

+0

@Ankur - теперь, когда вы исправили текст вопроса, который он скомпилирует :-) –

1

Примечания:

  1. Этот текст исключения поступающие из операционной системы Windows, не из Java.

  2. Нет необходимости использовать обратную косую черту в именах файлов Java. По крайней мере, если я никогда не сталкивался с этим в течение 13 лет.

+0

Мне хотелось бы узнать, почему downvote. Здесь есть нулевые фактические ошибки. – EJP

+0

Contra-voted, что. Это действительно действительно. Ошибка исходит из базовой файловой системы, и косые черты всегда хорошо работали в Windows. – BalusC

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