2017-01-15 7 views
4

Я пишу мастер-программу для моего симулятора. Я получаю брифинги в файле .txt, и я пытаюсь прочитать файл со сканером. Файл .txt содержит символ степени, и это заставляет сканер не читать весь файл.Чтение символа степени чтения из файла .txt со сканером

public static String[] ConvertFile(String FileName){ 
    ArrayList<String> FileArray = new ArrayList<String>(); 
    int count = 0; 

    try{ 
     Scanner file = new Scanner(new File ("C:\ <File Location>" + FileName)); 
     while(file.hasNextLine()){ 
      count++; 
      String Line = file.nextLine()); 
      System.out.printf("%3d: %s %n", count, Line); 
      System.out.println(count); 

     } 
    } 
    catch(FileNotFoundException fnfe){ 
     System.out.println("File Not Found."); 
    } 
    return null; 
} 

Ive положить строку в Queston ниже (линия 23)

COND: 140475 LB // RWY DRY // +14°C Q1021 270/09 // LMT: OBS(B) 

Обратите внимание, что выход дает первые 16 строк текстового файла, когда есть 726 линий. Я знаю его символ степени, потому что, когда я редактирую txt и удаляю символы степени, программа выводит все строки.

+0

Так что он падает из-за символа степени? –

+0

Что происходит, когда вы добираетесь до символа? Сбой при сбое, 'file.hasNextLine()' начинает возвращать 'false'? Есть ли еще какие-либо символы степени до этого, которые читаются, или это первое? –

+0

Он не разбивает печать первых 16 строк файла txt, но есть 726 строк. извините, я не знал об этом. Я знаю, что это проблема, потому что, когда я редактирую txt-файл и удаляю символы, сканер может печатать все строки. – TheSpaceWolf

ответ

1

Это интересное поведение. Я попытался запустить ваш пример, и я получил те же результаты, кроме меня, если бы у меня был символ степени в строке 5 моего файла, программа даже не хотела отображать первые 4 строки. Точная причина этого имеет какое-то отношение к кодировке символов, и было бы интересно найти подробное объяснение с тем, кто имеет представление об этом.

После некоторого поиска, выясняется, что Java Scanner использует набор символов базовой платформы по умолчанию. Вы можете выяснить, какой набор символов ваш по умолчанию, используя следующий код:

System.out.println(java.nio.charset.Charset.defaultCharset()); 

На моей системе, сообщение, которое отображалось был «UTF-8». В настоящее время я использую систему Windows 10, а текстовый файл, который я создал, имел кодировку по умолчанию «ANSI». Я бы посоветовал убедиться, что кодировка символов, которую использует ваш Scanner, и кодировка символов вашего текстового файла одинаковы.

Используя приложение Notepad Window, я смог изменить кодировку символов с ANSI на UTF-8. Просто нажмите «Файл», затем «Сохранить как ...», и когда появится диалоговое окно, убедитесь, что вы выбрали «UTF-8» внизу в поле «Кодировка».

enter image description here

Когда я снова побежал пример. Приложение смогло прочитать каждую строку успешно. Надеюсь это поможет. Приветствия.

+0

Спасибо за помощь. Мне нужно будет запомнить мои файлы txt с кодировкой UTF-8. – TheSpaceWolf

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

  • Нет связанных вопросов^_^