В Java, как я могу избежать HTTP 404 получения файла: // URL со специальными символами в нем? - PullRequest
1 голос
/ 06 июня 2009

Сначала я приведу небольшой фрагмент кода:

String path = "".equals(url.getPath()) ? "/" : url.getPath();
java.io.File f = new java.io.File(path);

if (!f.exists()) {
    this.code = 404;  // http Not Found
    return;
}

Здесь тип URL-адреса java.net.URL, а его значение имеет следующий формат:

file:///directory1/directory2.../filename

приведенный выше код работает в 90% случаев при обработке общих URL-адресов, но не работает, если в имени файла есть специальные символы. Например:

/tmp/Marissafolli/Receptionist/Administrative Assistant/Marissa's Resume.txt.txt

URL, подобные этому, сообщат код "404", даже если они существуют. Следующая версия будет работать для этих особых случаев:

java.io.File f = new java.io.File(url.toURI());

Но url.toURI() только в j2SE 1.5.0. Поэтому мне нужно использовать первую версию. Как я могу заставить это работать?

Ответы [ 2 ]

2 голосов
/ 06 июня 2009

Это не ошибка, это факт, что это недействительный URL.

Вам, очевидно, нужно избежать этих пробелов в% 20, для начала. Я не знаю, что вы делаете с апострофом. Этот блог предполагает, что он должен стать% 27. Попробуйте и посмотрите.

Или просто попробуйте java.net.URLEncoder , чтобы увидеть, что он вам дает.

0 голосов
/ 06 июня 2009

Почему бы сначала не создать URI, а затем вызвать метод toURL (). Подробнее здесь .

[ОБНОВЛЕНИЕ] Или, что еще лучше, почему бы не использовать URI непосредственно в конструкторе файла, поскольку класс URI позаботится о кодировке за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...