Nie wczytuje linii z pliku tekstowego

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:

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);
        }
0

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

                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ć

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 :/ ) ??

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);
                }

0

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

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

Notepad++

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 ??

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 ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1