Таким образом, я использую сканер для чтения файла. Однако я не понимаю, что если файл является файлом UTF-8, а текущая строка, читаемая при итерации по файлу, содержит цифру, метод Character.isDigit(line.charAt(0))
возвращает false. Однако, если файл не является файлом UTF-8, метод возвращает true.Символьная цифра не соответствует истине при чтении из файла UTF-8
Heres некоторый код
File theFile = new File(pathToFile);
Scanner fileContent = new Scanner(new FileInputStream(theFile), "UTF-8");
while(fileContent.hasNextLine())
{
String line = fileContent.nextLine();
if(Character.isDigit(line.charAt(0)))
{
//When the file being read from is NOT a UTF-8 file, we get down here
}
При использовании отладчика и глядя на line
строки, я могу видеть, что в обоих случаях (UTF-8 файл или нет) строка, как провести такой же, цифра , Почему это происходит?
Вы отлаживали ее? Какой символ возвращает 'line.charAt (0)', когда он не делает то, что вы ожидаете? – Jesper
'line.charAt (0)' ничего не возвращает при использовании файла UTF-8, что объясняет, почему Character.isDigit не возвращает true ofcourse. Но почему 'line.charAt (0)' ничего не возвращает? –
Этого не происходит. То есть, «Строка», которую вы получаете от чтения одного файла, отличается от того, который вы получаете от чтения другого. После того, как вы получите строку в форме «String», Java не знает и не заботится о том, откуда появилась «char». Когда вы отлаживаете, посмотрите на целочисленные значения 'char's, а не на их графическое представление и, конечно же, не на графическое представление всей строки. –