Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Java
Forum PHP.pl > Inne > Hydepark
czolg
Witam.

Wiem, że forum to nie jest nastawione na technologie jak java, jednak jestem w tak poważnej kropce, że warto z mojej strony zaryzykować pytaniem.
Otóż 21 maja piszę maturę z informatyki, właśnie w javie. (pierwszy raz w historii jest java na maturze:P) Niestety mogę nie wypaść zbyt ładnie, bo mam problem z zapisem do pliku. Szczerze to nie wiem jak to jest pod windowsem, jednak pod linuxem jest problem... Pokaże wam tutaj kod źródłowy mojego programu do analizy różnic pomiędzy odczytem a zapisem oraz logi jakie mi zwrócił...

TestPliku.java:
Kod
import java.io.*;
import java.util.*;
import java.lang.*;


class dataOp
Kod
class dataOp {
    
     String[] fData = new String[ 1000 ];


     public int loadFile( String loadPath ) throws IOException {
        
         BufferedReader bReader = new BufferedReader( new FileReader( new File( loadPath )));
         String nextLine = null;
         int index = 0;

         while( (nextLine = bReader.readLine() ) != null ) {
            
             try {
                
                 if( nextLine.toString().length() > 0 ) {

                     this.fData[ index ] = nextLine.toString();
                     ++index;

                 }
                
             } catch( NullPointerException exc ) {}
            
         }
         /* Zwaraca kontrolnie ile wierszy zostało odczytanych */
         return index;

     }

     public int saveFile( String savePath, String[] toFileData ) throws IOException {
        
         PrintWriter pWriter = new PrintWriter( new FileWriter( savePath ));
         int index = 0;
         int howManyLinestoFile = toFileData.length;
        
         for( int i = 0; i < howManyLinestoFile; ++i ) {
                
             try{
                
                 if( toFileData[ i ].toString().length() > 0 ) {
                    
                     pWriter.println( toFileData[ i ].toString() );
                     ++index;
                
                 }

             } catch( NullPointerException exc ) {}

         }
         /* Zwraca kontrolnie ile wierszy zostało odczytanych */
         return index;

     }

     public int countFileLines( String countedFile ) throws IOException {
    
         BufferedReader bReader = new BufferedReader( new FileReader( new File( countedFile )));
         String nextLine = null;
         int countLines = 0;

         while( (nextLine = bReader.readLine() ) != null ) {
        
             try {
                
                 if( nextLine.toString().length() > 0 ) {
                    
                     ++countLines;

                 }

             } catch( NullPointerException exc ) {}

         }
         /* Zwraca ilość lini w pliku */
         return countLines;

     }

}


class SprawdzPlik
Kod
class SprawdzPlik {
    
     private dataOp dO;
    

     public void checkFiles( String loadPath, String savePath ) throws IOException {
        
         dO = new dataOp();

         int howManyLinesLoaded    = dO.loadFile( loadPath );
         int howManyLinesSaved     = dO.saveFile( savePath, dO.fData );
         int countLinesinSavedFile = dO.countFileLines( savePath );
        
         System.out.println( "Wczytano " + howManyLinesLoaded + " lini z pliku " + loadPath + ", do pliku " + savePath + " zapisano " + howManyLinesSaved + " lini, a w zapisywanym pliku znajduje sie obecnie " + countLinesinSavedFile + " linii.");

     }

}


public class TestPliku
Kod
public class TestPliku {
    
     public static void main( String[] args ) throws IOException {
        
         SprawdzPlik sprawdzajPlik = new SprawdzPlik();
         BufferedReader consoleReader = new BufferedReader( new InputStreamReader( System.in ));
         String loadPath = null;
         String savePath = null;
        
         System.out.println( "Podaj sciezke bezwzgledna do pliku, ktory ma byc odczytany." );
         loadPath = consoleReader.readLine();

         System.out.println( "Podaj sciezke bezwzgledna do pliku, w ktory ma byc zapisana tresc wczytywanego pliku." );
         savePath = consoleReader.readLine();

         sprawdzajPlik.checkFiles( loadPath, savePath );
         System.exit( 1 );

     }
}


Jestem wprost pewny, że błąd jest z mojej winy. Z mojego doświadczenia wynika, że komputer w takich kwestiach się raczej nie myli. smile.gif
Jeszcze jedna prośba - jeśli ktoś z forumowiczów siedzi w Javie - mógłby mi wytknąć błędy w architekturze? Jestem na tyle początkujący, że wszelka krytyka jest wskazana. winksmiley.jpg

Logi jakie zwraca program:
Kod
czolg@ubuntu:~/java/files$ java TestPliku
Podaj sciezke bezwzgledna do pliku, ktory ma byc odczytany.
/home/czolg/java/slowa.txt
Podaj sciezke bezwzgledna do pliku, w ktory ma byc zapisana tresc wczytywanego pliku.
/home/czolg/java/testpliku.txt
Wczytano 1000 lini z pliku /home/czolg/java/slowa.txt, do pliku /home/czolg/java/testpliku.txt zapisano 1000 lini, a w zapisywanym pliku znajduje sie obecnie 526 linii.


Kod
czolg@ubuntu:~/java/files$ java TestPliku
Podaj sciezke bezwzgledna do pliku, ktory ma byc odczytany.
/home/czolg/java/testPliku/slowa1.txt
Podaj sciezke bezwzgledna do pliku, w ktory ma byc zapisana tresc wczytywanego pliku.
/home/czolg/java/testPliku/slowa1Wynik.txt
Wczytano 10 lini z pliku /home/czolg/java/testPliku/slowa1.txt, do pliku /home/czolg/java/testPliku/slowa1Wynik.txt zapisano 10 lini, a w zapisywanym pliku znajduje sie obecnie 0 linii.


Są one troszkę sprzeczne...

Pozdrawiam i z góry dziękuje za odpowiedź, czolgmc.
Jabol
Fajnie, nie ma nic lepszego niż czytanie kilkudziesięciu nieskomentowanych linii kodu oraz odpowiadanie na pytanie, które wcale nie zostało zadane.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.