Streams and File I/O Kapitel 10
Agenda Exceptions Textfiler Skriva Appenda Läsa File Sökvägar
Exceptions Scanner keyboard = new Scanner(System.in); try { int a = 5; int b = keyboard.nextInt( ); if(b == 0) throw new Exception("Kan inte dela med noll!"); else System.out.println("a / b = " + a/b); } catch(Exception e) { System.out.println(e.getMessage()); }
Exceptions Try-blocket Innehåller kod där nått kan gå fel Vid fel kastar (throw) vi en exception Catch-blocket Fångar kastet Behandlar felet
Exception-klasser FileNotFoundException IOException ClassNotFoundException NoSuchMethodException
Filer Primärminnet Behöver ström Data lagras i program Sekundärminnet Behöver inte ström Data lagras i filer Program, bilder, filmer, music, …
Filer Textfiler Sekvens av tecken Kan läsas i en editor Övriga filer kallas för binära filer
Skriva till fil import java.io.*; public void out( ) { String s = "HEJ!"; PrintWriter output = null; try { output = new PrintWriter(new File("fil.txt")); } catch(FileNotFoundException e) { System.out.println(e.getMessage( )); System.exit(0); } output.println(s); output.close( ); }
Appenda till en fil PrintWriter output = null; try { output = new PrintWriter(new FileOutputStream("fil.txt",true)); } catch(FileNotFoundException e) { System.out.println(e.getMessage( )); System.exit(0); } output.println(" DÅ !"); output.close( );
Läsa från fil public void in( ) { Scanner in = null; String s; try { in = new Scanner(new File("fil.txt")); } catch(FileNotFoundException e) { System.out.println(e.getMessage()); System.exit(0); } s = in.nextLine( ); System.out.println(s); in.close( ); }
Läsa från fil
Skriva vektor till fil int a[ ] = {1,2,3}; PrintWriter output = null; try { output = new PrintWriter(new File("fil.txt")); } catch(FileNotFoundException e) { System.out.println(e.getMessage( )); System.exit(0); } for(int i=0;i<a.length;i++) output.println(a[i]); output.close( );
Läsa vektor från fil int[ ] b = new int[3]; int i=0; Scanner in = null; try { in = new Scanner(new File("fil.txt")); } catch(FileNotFoundException e) { System.out.println(e.getMessage()); System.exit(0); } while(in.hasNextInt( ) == true) b[i++] = in.nextInt( ); in.close( );
File
Scanner Keyboard = new Scanner(System.in); System.out.println("Ge ett filnamn: "); File filen = new File(Keyboard.nextLine( )); System.out.print("Filen " + filen.getName( )); if(filen.isDirectory( )) { System.out.println(" är ett bibliotek och innehåller följande filer:"); String[ ] filer = filen.list( ); for (int i=0; i<filer.length; i++) System.out.println(filer[i]); }
File else if(filen.isFile( )) { System.out.println(" är en vanlig fil"); System.out.print("Den är " + filen.length( ) + " bytes stor "); System.out.println("och senast ändrad " + new Date(filen.lastModified( ))); System.out.println("Sökvägen är " + filen.getAbsolutePath( )); System.out.print("Filen är " + (filen.canRead( ) ? "" : "inte ") + "läsbar och "); System.out.println( (filen.canWrite( ) ? "" : "inte ") + "skrivbar"); } else System.out.println(" finns inte!");
Sökvägar Anger vart filen finns Hela sökvägen C:\a\b\c\fil.txt Relativ sökväg \c\fil.txt Skillnader i sökvägar för olika OS /user/reine/fil.txt
Summering Exceptions Textfiler Skriva, PrintWriter Appenda, PrintWriter Läsa, Scanner Öppna, stänga File Sökvägar