Java - неправильный URL - неверный - нет протокола
Этот код:
String file = "";
String filename = "";
try{
BufferedReader ins = new BufferedReader(new FileReader(new File("filename.txt")));//get file name
while (ins.ready()) {
filename = ins.readLine();
}
ins.close();
}catch(Exception e){
}
String[] sa = filename.split("/");
file = sa[sa.length - 1];
try {
System.out.println(filename);
} catch (Exception e) {
e.printStackTrace();
}
Печать:
http://wordpress.org/plugins/about/readme.txt
Когда я пытаюсь сделать:
URL url = new URL(filename);
Я получаю исключение по неверно сформированному URL: нет протокола Это происходит без причины. Если я вручную назначу строку имени файла " http://wordpress.org/plugins/about/readme.txt", это будет работать отлично, что-то не так с программой чтения файлов?
Вещь идет как
Прочитайте строку из файла, а затем сделайте его URL-адресом! Прекратите редактировать неправильно!
2 ответа
Решение
Идея:
Возможно, файл сохранен в формате UTF-8, но с дополнительным символом спецификации в начале файла. Это пространство Юникода с нулевой шириной.
filename = filename.replaceFirst("^\uFFFE", "");
Рабочий код:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.net.URL;
public class MyFileReader {
public static void main(String[] args) {
String file = "";
String filename = "";
try {
BufferedReader ins = new BufferedReader(new FileReader(new File("c:\\filename.txt")));// get file name
while (ins.ready()) {
filename = ins.readLine();
}
ins.close();
} catch (Exception e) {
e.printStackTrace();
}
String[] sa = filename.split("/");
file = sa[sa.length - 1];
try {
System.out.println(filename);
URL url = new URL(filename);
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println(file);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Содержимое файла filename.txt:
http://wordpress.org/plugins/about/readme.txt
Выход из программы:
http://wordpress.org/plugins/about/readme.txt
readme.txt
Ошибки / Исключения:Нет