Dzieje się tak dlatego, że każesz Javie ten plik utworzyć lub wyczyścić w pierwszej linijce metody createFile()
. Poczytaj sobie, co robi konstruktor PrintWritera
:
Creates a new PrintWriter, without automatic line flushing, with the specified file. This convenience constructor creates the necessary intermediate OutputStreamWriter, which will encode characters using the default charset for this instance of the Java virtual machine.
Parameters:
file - The file to use as the destination of this writer. If the file exists then it will be truncated to zero size; otherwise, a new file will be created. The output will be written to the file and is buffered.
W takim przypadku Twój kod jest trochę bez sensu, bo najpierw ten plik tworzysz, a potem sprawdzasz czy istnieje - jest oczywiste, że będzie istniał.
Druga rzecz to porządki w Twoim kodzie:
public static boolean checkFileExist(){
return f.exists(); // prościej?
}
I jeszcze pytanie o to:
if(checkFileExist()==false) {
// ...
} else if(checkFileExist()==true){
// ...
}
Ile możliwych wartości może mieć typ boolean
? Dwie. Więc jeśli wynik funkcji checkFileExists()
nie jest false
, to możesz w ciemno strzelać, że będzie to true
. Ergo, nie potrzebujesz jeszcze raz wywoływać checkFileExists()
, by się o tym przekonać. Nie rób tak, bo sobie prędzej czy później strzelisz w stopę takimi zbędnymi wywołaniami.