Commit a22bef97 by Patryk Czarnik

rozważania na temat close i zapisu

parent 4bfdafd0
package p13_pliki.podstawy;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.time.LocalTime;
public class Zapis3 {
// W tej wersji programu celowo doprowadzamy do wyjątku - dzielenie przez zero, jeśli ostatnią cyfrą sekundy jest 0
// Gdy dojdzie do wyjątku, to program nie wykona metody close, a więc plik nie zostanie prawidłowo zamknięty.
public static void main(String[] args) throws FileNotFoundException {
LocalTime czas = LocalTime.now();
System.out.println("Startujemy o godzinie " + czas);
int cyfra = czas.getSecond() % 10;
System.out.println("Ostatnia cyfra sekundy: " + cyfra);
PrintWriter out = new PrintWriter("wynik3.txt");
out.println("Pierwsza linia");
out.println("Druga linia");
out.print("Teraz jest godzina ");
out.println(czas);
out.println("Wynik dzielenia: " + (100 / cyfra));
out.println("Koniec");
out.close();
System.out.println("Gotowe");
}
}
package p13_pliki.podstawy;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.time.LocalTime;
public class Zapis3a {
// W tej wersji programu celowo doprowadzamy do wyjątku - dzielenie przez zero, jeśli ostatnią cyfrą sekundy jest 0
// Gdy dojdzie do wyjątku, to program nie wykona metody close, a więc plik nie zostanie prawidłowo zamknięty.
public static void main(String[] args) {
LocalTime czas = LocalTime.now();
System.out.println("Startujemy o godzinie " + czas);
int cyfra = czas.getSecond() % 10;
System.out.println("Ostatnia cyfra sekundy: " + cyfra);
try {
PrintWriter out = new PrintWriter("wynik3.txt");
out.println("Pierwsza linia");
out.println("Druga linia");
out.print("Teraz jest godzina ");
out.println(czas);
out.println("Wynik dzielenia: " + (100 / cyfra));
out.println("Koniec");
out.close();
} catch(FileNotFoundException e) {
e.printStackTrace();
}
System.out.println("Gotowe");
}
}
package p13_pliki.podstawy;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.time.LocalTime;
public class Zapis4 {
// W tej wersji stosujemy konstrukcję try-with-resources (od Java 7),
// która gwarantuje, że plik zostanie zamknięty podczas wychodzenia z bloku try w każdej w tych sytuacji:
// - gdy blok try normalnie się wykona
// - gdy dojdzie do wyjątku, który zostanie obsłużony w catch
// - gdy dojdzie wyjątku, które nie jest wyłapany
// - gdy wewnątrz try znajdzie się instrukcja return albo inna przerywająca działanie (ale nie System.exit() !)
public static void main(String[] args) {
LocalTime czas = LocalTime.now();
System.out.println("Startujemy o godzinie " + czas);
int cyfra = czas.getSecond() % 10;
System.out.println("Ostatnia cyfra sekundy: " + cyfra);
// możesz spróbować zapisać nowy plik na pulpicie albo w podobnym miejscu
// na komputerze w sali ALX byłoby tak:
// "C:/Users/kurs/Desktop/nowy_plik.txt"
// "C:\\Users\\kurs\\Desktop\\nowy_plik.txt"
// UWAGA - to nadpisuje instniejące pliki
try(PrintWriter out = new PrintWriter("wynik4.txt")) {
out.println("Pierwsza linia");
out.println("Druga linia");
out.print("Teraz jest godzina ");
out.println(czas);
out.println("Wynik dzielenia: " + (100 / cyfra));
out.println("Koniec");
// gdy używamy try-with-resources, nie trzeba już jawnie pisać close
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println("Gotowe");
}
}
package p13_pliki.podstawy;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.time.LocalTime;
public class Zapis5 {
// W tej wersji programu zamykamy plik w sekcji finally - tak robiła się przed Java 7.
// Jednocześnie obsługę błędu FileNotFound przenosimy do catch - to jest najbardziej typowy zapis.
public static void main(String[] args) {
LocalTime czas = LocalTime.now();
System.out.println("Startujemy o godzinie " + czas);
int cyfra = czas.getSecond() % 10;
System.out.println("Ostatnia cyfra sekundy: " + cyfra);
PrintWriter out = null;
try {
out = new PrintWriter("wynik5.txt");
out.println("Pierwsza linia");
out.println("Druga linia");
out.print("Teraz jest godzina ");
out.println(czas);
out.println("Wynik dzielenia: " + (100 / cyfra));
out.println("Koniec");
} catch(FileNotFoundException e) {
e.printStackTrace();
} finally {
if(out != null)
out.close();
}
System.out.println("Gotowe");
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment