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.*;
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;
}
}
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.");
}
}
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 );
}
}
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.

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.

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