Wpis z mikrobloga

Cześć, piszę program który zapisuje dane do pliku CSV. Czy następujące sprawdzanie warunków:
a) plik nie istnieje
b) plik istnieje ale jest pusty

jest poprawne w ten sposób:

(tutaj ustalam savePath)
StringBuilder sb = new StringBuilder();
File file = new File(savePath);
if (!file.exists() || file.length()==0) {
sb.append("piękny nagłówek csv");
}
(tutaj mam writera z opcją append w konstruktorze, więc jeśli jest plik i jest w nim coś zapisane to po prostu dodaję bez nagłówka)

Na stacku wyczytałem opcję BufferedReaderem ale ktoś dodał że może nie działać dla różnego kodowania plików.
#naukaprogramowania #java
  • 5
@Pit32: zrobiłbym warunek przeciwny i przerwanie funkcji w nim. To co napisałeś, sugeruje, że jeśli plik niepusty istnieje, będziesz próbował do niego zapisywać pusty string.
@tptak: mam coś takiego:
1. tworzę StringBuilder
2. jeśli plik nie istnieje bądź jest pusty dodaję do SB nagłówek
3. dodaję normalnie pętlą dane do SB
4. jeśli plik nie istniał lub był pusty, tworzony jest nowy i wpisuję do niego SB (z nagłówkiem), jeśli istniał niepusty(czyli prawdopodobnie jest tam nagłówek i ew. jakieś dane) to po prostu dodaję dane bez nagłówka na koniec pliku.
Więc jeśli plik istnieje i jest
@tptak: najbardziej chodzi mi o
if (!file.exists() || file.length()==0)
czyli sprawdzanie czy plik istnieje oraz jest pusty, program działa itp, chciałem tylko się upewnić że w jakimś dziwnym przypadku nie dostanę niespodziewanego błędu, albo czy jest jakaś inna "popularna" metoda na zrobienie tego
@Pit32:
if (file.createNewFile() || file.length() == 0) {
sb.append("piękny nagłówek csv");
}

metoda File.createNewFile() próbuje utworzyć plik. Jak się uda to zwraca true. Jeśli się nie uda to znaczy, że plik istnieje i sprawdzamy czy jest pusty. Jak tak to zapisujemy nagłówek.