Nie wczytuje linii z pliku tekstowego

Nie wczytuje linii z pliku tekstowego
KR
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 7 lat
  • Postów:260
0

Witam,

Mam problem.

Otóż program nie chce wczytać linii z pliku. Wywala błąd index out of range: 3 (mimo, że linia ma ponad 30 znaków a ma wczytać pierwsze 3), oto kod:

Kopiuj
BufferedReader br;
        try {
            br = new BufferedReader(new FileReader("Z:/INPUT/" + GetFileName()));
            try {
                String Item;
                while ( (Item = br.readLine()) != null ) {
                    if("HDR".equals(Item.substring(0, 3)))
                    {
                        tempHEADR = Item;
                    } else {
                        ProcessFile(Item, ProductionLines, DeliveryLines, tempHEADR);
                    }
                }
                HEADR = GetHeader();
            } catch (IOException e) {
                DisplayErrorMessage(e.getMessage());
                System.exit(0);
            }
        } catch (FileNotFoundException | StringIndexOutOfBoundsException e) {
            DisplayErrorMessage(e.getMessage());
            out.println(Arrays.toString(e.getStackTrace()));
            System.exit(0);
        }
edytowany 1x, ostatnio: Kremius
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Mylisz się, linia nie ma 30 znaków, nie ma nawet 3. Uruchom taki kod:

Kopiuj
                while ( (Item = br.readLine()) != null ) {
                    System.out.println(Item.length());
                    if("HDR".equals(Item.substring(0, 3)))
                    {
                        tempHEADR = Item;
                    } else {
                        ProcessFile(Item, ProductionLines, DeliveryLines, tempHEADR);
                    }
                }

Ostatnie linie w pliku mogą zawierać tylko znaki końca wiersza (ewentualnie spacje). Oglądając plik w edytorze łatwo to przeoczyć


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans
KR
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 7 lat
  • Postów:260
0

Wyrzuciło mi, że pierwsza linia ma 42 znaki, następna natomiast 0 (mimo że plik ma kolejnych 158 linii).

Jak mogę to naprawić ?

EDIT

Poniższy kod normalnie wyświetla ten plik, natomiast jak przerobić go aby działał jak wyżej (z założenia :/ ) ??

Kopiuj
String linia = "";
String liniaSub = ""
try {
                    while ((linia = bfr.readLine()) != null) {
                        System.out.println(linia);
                        BufferedWriter out = new BufferedWriter(file);
                        liniaSub = linia.substring(0, 374);
                        out.write(liniaSub + "\n");
                        out.flush();
                    }
                } catch (IOException e) {
                    System.exit(2);
                }

edytowany 2x, ostatnio: Kremius
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

W jakim edytorze oglądasz plik? Nie używaj do oglądania Notatnika.
Możesz pomijać puste wiersze.

Kopiuj
                while ( (Item = br.readLine()) != null ) {
                    if(!Item.isEmpty() && Item.startsWith("HDR"))
                    {
                        tempHEADR = Item;
                    } else {
                        ProcessFile(Item, ProductionLines, DeliveryLines, tempHEADR);
                    }
                }

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
KR
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 7 lat
  • Postów:260
0

Notepad++

KR
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 7 lat
  • Postów:260
0

Witam, dziś program zaczytał poprawnie jeden plik później się wywalił. Jest jakiś sposób na kasowanie pod koniec pamięci podręcznej albo coś, co mogłoby powodować takie zachowanie programu ??

KR
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 7 lat
  • Postów:260
0

Witam ponownie.

Mam po kilku dniach inny problem.

Otóż nawet nie zmieniłem kodu a program zaczął generować puste pliki ??

Gdzie szukać problemu, skoro nic nie zmieniłem ?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.