java.lang.io包的使用

 1 String source = "ABCDEF123456";

 2         int mid = source.length() / 2;

 3         

 4         ByteArrayInputStream bytesIS = new ByteArrayInputStream(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  = new FileInputStream(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 = new RandomAccessFile(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 = new Scanner(file);

82         System.out.println(scanner.next());

83         scanner = scanner.reset();

84         

85         // java.io.PushbackInputStream 过滤流

86         // 这个流提供了 unread 方法, 回退到缓冲区,

87         bytesIS.reset();

88         PushbackInputStream pis = new PushbackInputStream(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 = new ByteArrayOutputStream();

95         bytesOutPut.write(source.getBytes());

96         System.out.println(bytesOutPut.toString());

97         bytesOutPut.write(0x30);

98         System.out.println(bytesOutPut.toString());

99         

 

你可能感兴趣的:(java)