Dane z pliku

0

Witam serdecznie mam następujący problem:

  • chciałbym odczytać dane tekstowe z pliku *.txt;
  • dane są w formie wierszy bez spacji i przecinków na końcu każdego wiersza jest enter;
  • potrzebuje wydobyć z tego pliku wszystkie wiersze i umieścić w jednym długim String'u;
  • jak pozbyć się enterów?

mam taki kod:

import java.io.*;

public class DNA {
        public static void main (String args[]) throws Exception {
                // nazwa pliku wejsciowego
                String nazwaIn = "plik.txt";
                // nazwa pliku wyjsciowego
                String nazwaOut = "plik_out.txt";
                // string odczytany z pliku
                String dane = "";
                // string zapisany do pliku
                String daneOut = "";
                int znak = 0;
                
                // program czyta plik wejsciowy
                System.out.println("Program czyta plik..." + '\n'); 
                try{
                        // nowy strumień wejsciowy
                        FileInputStream wejscie = new FileInputStream(nazwaIn);
                        // wczytanie calego pliku do stringu
                        znak = wejscie.read();
                        while(znak != -1){
                                dane += (char) znak;
                                znak = wejscie.read();
                        }
                        wejscie.close();
                }catch(IOException ex) {
                        System.out.println("Blad zwiazany z odczytem pliku. "+ex);
                }
                
                
                
                // petla konwertujaca
                for(int i = 0; i<dane.length(); i++){
                        //jesli znak to \n to zamienia
                        if(dane.charAt(i) == '\n')
                                daneOut += "";
                        else
                                daneOut += dane.charAt(i);
                }

                System.out.println("Sekwencja z pliku:        "+ daneOut);
}
}

na ekranie wyświetla mi się tylko pierwszy wiersz zamiast całego pliku co uniemożliwia mi prace na tych danych, myślałem o odczytaniu z pliku poszczególnych linii do stringów a potem o połączeniu tych stringow w jeden ale to chyba głupie.

Pozdrawiam, Marcin

0
try{
                        // nowy strumień wejsciowy
                        FileInputStream wejscie = new FileInputStream(nazwaIn);
                        // wczytanie calego pliku do stringu
                        znak = wejscie.read();
                        while(znak != -1){
                                if(znak!='\n')dane += (char) znak;
                                znak = wejscie.read();
                        }
                        wejscie.close();
                }catch(IOException ex) {
                        System.out.println("Blad zwiazany z odczytem pliku. "+ex);
                }

Pisane z palca.
Pozdrawiam

0

Niestety wyświetla nadal tylko jeden pierwszy wiersz z pliku a ja potrzebuje aby cały plik (wszystkie wiersze niezależnie ile ich jest) były w jednej zmiennej String.

0

Jestem poczatkujacy... ;] ,ale moze to Ci pomoze?

import java.io.*;

public class DNA {
        public static void main (String args[]) throws Exception {
                File txt;
                txt = new File("plik.txt");
                String dane = "";
                String daneOut = "";
                // program czyta plik wejsciowy
                System.out.println("Program czyta plik..." + '\n'); 
                
                try {
                	
        			BufferedReader odczytaj = new BufferedReader(new FileReader(txt));
        			
        			
        				while((dane = odczytaj.readLine())!=null)
        				//System.out.println(linia);
//        					 petla konwertujaca
        	                for(int i = 0; i<dane.length(); i++){
        	                        //jesli znak to \n to zamienia
        	                        if(dane.charAt(i) == '\n')
        	                                daneOut += "";
        	                        else
        	                                daneOut += dane.charAt(i);
        	                }

        	                System.out.println("Sekwencja z pliku:        "+ daneOut);

        				} catch (IOException e) {
        				e.printStackTrace();
        		}
        }				
}
        	
                
                 
</cpp> ```
0

znalazłem błąd w moim kodzie...

należy uwzględnić poprawkę Afish'a oraz w pętli konwertującej zamienić '\n' na '\r' wynika to chyba z tego iż aby uzyskać nowy wiersz potrzeba 2 znaków a nie jednego czyli musimy usunąć znak nowa linia ('\n') oraz znak powrotu karetki ('\r'). Po tych 2 poprawkach działa.

Bardzo dziękuje...

0

Jeżeli chcesz w ten sposób wczytywać dane z dużych plików, to zamiast wczytywać do Stringa, wczytuj do StringBuffer. Na końcu zrób toString().
Problemem jest to, że dopisanie nawet jednego znaku do Stringa wymaga stworzenia nowego obiektu String i przepisania całej zawartości ze starego.

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/StringBuffer.html

0

Witajcie, sorry że odgrzewam stary temat ale nie chcę zakładać nowego, mam do napisania podobny program który wczytuje liczby z pliku txt... Problem w tym że po jego napisaniu i przetestowaniu wyskakuje mi błąd typu : nie można odnaleźć określonego pliku ..
Proszę o pomoc..

Z góry dzięki, pozdrawiam

0

Ja używałem split("\n"); Od razu wrzuca do tablicy stringów.

Co do ostatniego posta....sprawdź gdzie masz plik...jak podajesz samą nazwę w kodzie to powinien być w ....NetBeansProjects/ProgramWKtórymUżywaszPliku/
Zawsze możesz podać ścieżkę sam :)

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