polskie znaki w pliku txt z JTextArea

0

Witam,
Stworzyłem sobie taki mały edytorek który wczytuje co zastało wpisane JTekstArea i zapisuje do pliku. problem zaczyta się wtedy gdy wpisywane są polskie znaki niestety w pliku txt robią się krzaczki # hmm może ktoś zna na to sposób gdzie mam wpisać kodowanie "UTF8"??
to fragment kodu który używam do zapisywania do pliku:

                                String tekst = new String(ta.getText());
				tekst2 +=tekst;
				StringBuffer sb = new StringBuffer(tekst2);
				String str = new String(sb.toString());
				FileOutputStream fos = null;
				try {
						fos = new FileOutputStream(nazw); //Otwieranie pliku 
						for(int i = 0; i < str.length(); i++){
						fos.write((int)str.charAt(i)); //Zapis bajt po bajcie każdego znaku...
						}
						JOptionPane.showMessageDialog(null, "Twój plik został poprawnie Zapisany.");
						} 
						catch(IOException ex){
						System.out.println("Błąd operacji na pliku: "+ex);
						} 
0

Jakiego programu używasz by zobaczyć krzaczki w tym pliku? Może ten program nie potrafi?
Jak masz już String, to spróbuj tak:

     FileWriter f=new FileWriter(nameOfFile);
     f.write(txt);
     f.close();
0

to co napisałeś mam zamienić za to co mam w try{ ? podmieniam próbuje róznych kombinacji ale mi błędy wyrzuca..

0

Tak, zwróć uwagę, że masz inne nazwy zmiennych.
I nigdy nie pisz wyrzuca mi błędy. Zawsze podawaj tekst błędu, i zaznaczaj wiersz w kodzie gdzie się błąd pojawił.

0

oki zaaplikowałem twój kod jednak wciąż pokazują się # plik txt otwieram np Officem notatnikiem mouspadem i nic to nie zmienia ;//

0

sorki jeszcze raz dokładnie sprawdziłem. w złym miejscu dopisałem kod i teraz wszystko mi działa ;) zapisuje mi polskie znaki świetnie.
Wielkie dzięki ;)
musze jeszcze poprawić odczytywanie bo niestety już jak odczytuje z pliku i wrzuca do JText Area to znów są krzaczki choć w pliku jest poprawnie hmm ...
kod na odczytywanie :

if(!nazw.endsWith(".txt2"))
		{
			RandomAccessFile raf = null;
			try {raf = new RandomAccessFile(nazw, "rw");} 
				catch (FileNotFoundException e) {
					System.out.println("BŁĄD PRZY OTWIERANIU PLIKU!");
					System.exit(1);
				}
			long pozycja=0, dlugoscpliku=0;
			// SWOBODNY ODCZYT Z PLIKU
			try {
				dlugoscpliku = raf.length();
				raf.seek(0); // "skok" na początek pliku
				while (pozycja < dlugoscpliku)
				{tekst += raf.readLine()+"\n";
				 pozycja= raf.getFilePointer();}
				 } 
				 catch (IOException e1) {
					System.out.println("BŁĄD ODCZYTU Z PLIKU!");
					System.exit(2);
				} 
			}
0

Może jak zapisujesz przy pomocy FileWritera, to czytaj za pomocą FileReadera.

    	StringBuilder text=new StringBuilder("");
        try
        {
            BufferedReader in=new BufferedReader (new FileReader(nameOfFile));
            while (in.ready())
            {
                text.append(in.readLine()+"\n");
            }
            in.close();
     	}

Nie używaj nigdy operatora konkatenacji (+) do łączenia wielu Stringów. Łączenie przy użyciu klasy StringBuilder może być kilkanaście tysięcy razy szybsze.

0

dzięki za rade wymieniłem wszystkie + na StringBuilder ;)
Dodałem kod i wgląda to teraz tak:

if(nazw.endsWith(".txt"))
		{
            StringBuilder tekst=new StringBuilder("");
        try
        {
            BufferedReader in=new BufferedReader (new FileReader(nazw));
            while (in.ready())
            {
                tekst.append(in.readLine()+"\n");
            }
            in.close();
             }
				 catch (IOException e1) {
					System.out.println("BŁĄD ODCZYTU Z PLIKU!");
					System.exit(2);
				} 
			}

i gdy wczytuje plik txt niestety nic nie pokazuje.
Sprawdziłem czy na pewno nazwę wczytuje i wczytuje poprawnie oraz w pliku na pewno jest napis, hmm jaki może być błąd ..? lub jak go znaleźć?

0

oki problem rozwiązany działa ;)
zamieszane było z tym że tekst co prawda był przechowywany w zmiennej text ale nie mógł jej wyciągnąć z poza if-a ;p (jakkolwiek to brzmi;D)
Wielkie dzięki za nieocenioną pomoc jestem wam dozgonnie wdzięczny;)
Pozdrawiam

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