1 String source = "ABCDEF123456";2 int mid = source.length() / 2;3
4 ByteArrayInputStream bytesIS = newByteArrayInputStream(source.getBytes());5
6 //1. 顺序读取流
7 int b = 0;8 while( -1 != (b =bytesIS.read())){9 System.out.print(Integer.toHexString(b) + " ");10 }11 System.out.println();12
13 //2. 读取完毕之后 调用 read 始终返回 -1
14 b =bytesIS.read();15 System.out.println(b);16
17 //对流进行重置
18 int index = 0;19 bytesIS.reset();20 while( -1 != (b =bytesIS.read())){21 if(index++ == mid &&bytesIS.markSupported()){22 bytesIS.reset();23 }24 System.out.print(Integer.toHexString(b) + " ");25 }26 System.out.println();27
28 //标记流
29 index = 0;30 bytesIS.reset();31 while( -1 != (b =bytesIS.read())){32 if(index++ == mid &&bytesIS.markSupported()){33 //bytesIS.reset();
34 bytesIS.mark(0);35 }36 System.out.print(Integer.toHexString(b) + " ");37 }38 System.out.println();39 bytesIS.reset();40 while( -1 != (b =bytesIS.read())){41 System.out.print(Integer.toHexString(b) + " ");42 }43 System.out.println();44 bytesIS.reset();45 while( -1 != (b =bytesIS.read())){46 System.out.print(Integer.toHexString(b) + " ");47 }48 System.out.println();49
50 //1. 读取文件 使用 FileInputStream 只能
51 File file = new File("e:/test.txt");52 System.out.println(file.length());53 FileInputStream FileIS = newFileInputStream(file);54 while( -1 != (b =FileIS.read())){55 System.out.print("0x" + Integer.toHexString(b) + " ");56 }57 System.out.println();58
59 //可以使用seek方法来随机的读取文件,但是对于 RandomAccessFile,并不是流类,
60 String mode = "r";61 RandomAccessFile randomFile = newRandomAccessFile(file, mode);62 while( -1 != (b =randomFile.read())){63 System.out.print("0x" + Integer.toHexString(b) + " ");64 }65 System.out.println();66 System.out.println(randomFile.getFilePointer());67 System.out.println(randomFile.length());68 randomFile.seek(6);69 while( -1 != (b =randomFile.read())){70 System.out.print("0x" + Integer.toHexString(b) + " ");71 }72 System.out.println();73 randomFile.seek(0);74 while( -1 != (b =randomFile.read())){75 System.out.print("0x" + Integer.toHexString(b) + " ");76 }77 System.out.println();78
79 //java.lang包中有一个文本描述的工具类 但是其提供的功能也是顺序读取。80 //java.util.Scanner
81 Scanner scanner = newScanner(file);82 System.out.println(scanner.next());83 scanner =scanner.reset();84
85 //java.io.PushbackInputStream 过滤流86 //这个流提供了 unread 方法, 回退到缓冲区,
87 bytesIS.reset();88 PushbackInputStream pis = newPushbackInputStream(bytesIS);89 pis.unread(0x30);90 System.out.println(Integer.toHexString(pis.read()));91 System.out.println(Integer.toHexString(pis.read()));92
93 //到目前为止,只有流类基本上只能按流的顺序来读写。
94 ByteArrayOutputStream bytesOutPut = newByteArrayOutputStream();95 bytesOutPut.write(source.getBytes());96 System.out.println(bytesOutPut.toString());97 bytesOutPut.write(0x30);98 System.out.println(bytesOutPut.toString());99