控制台程序,读取Java基础之读文件部分(StreamOutputToFile)写入的50个fibonacci数字。
1 import java.nio.file.*; 2 import java.nio.*; 3 import java.io.*; 4 5 public class StreamInputFromFile { 6 public static void main(String[] args) { 7 8 Path file = Paths.get(System.getProperty("user.home")).resolve("Beginning Java Struff").resolve("fibonnaci.bin"); 9 10 if(!Files.exists(file)) { 11 System.out.println(file + " does not exist. Terminating program."); 12 System.exit(1); 13 } 14 15 final int count = 6; // Number of values to be read each time 16 17 // Buffer to hold count values 18 ByteBuffer buf = ByteBuffer.allocate(8*count); 19 20 LongBuffer values = buf.asLongBuffer(); 21 byte[] bytes = buf.array(); // Backing array for buf 22 int totalRead = 0; // Total value read 23 try(BufferedInputStream fileIn = new BufferedInputStream(Files.newInputStream(file))){ 24 int numberRead = 0; 25 while(true) { 26 numberRead = fileIn.read(bytes, 0, bytes.length); 27 if(numberRead == -1) // EOF reached 28 break; 29 totalRead += numberRead/8; // Increment total 30 31 for(int i = 0 ; i < numberRead/8 ; ++i) // Access as many as there are 32 System.out.format("%12d", values.get()); 33 34 System.out.println(); // New line 35 values.flip(); // Reset for next input 36 } 37 System.out.format("%d values read.%n", totalRead); 38 } catch(IOException e) { 39 System.err.println("Error writing file: " + file); 40 e.printStackTrace(); 41 } 42 } 43 }