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         
时间: 2024-08-21 12:25:22

java.lang.io包的使用的相关文章

深入探讨 java.lang.ref 包--转

概述 Java.lang.ref 是 Java 类库中比较特殊的一个包,它提供了与 Java 垃圾回收器密切相关的引用类.这些引用类对象可以指向其它对象,但它们不同于一般的引用,因为它们的存在并不防碍 Java 垃圾回收器对它们所指向的对象进行回收.其好处就在于使者可以保持对使用对象的引用,同时 JVM 依然可以在内存不够用的时候对使用对象进行回收.因此这个包在用来实现与缓存相关的应用时特别有用.同时该包也提供了在对象的“可达”性发生改变时,进行提醒的机制.本文通过对该包进行由浅入深的介绍与分析

JAVA中反射机制六(java.lang.reflect包)

一.简介 java.lang.reflect包提供了用于获取类和对象的反射信息的类和接口.反射API允许对程序访问有关加载类的字段,方法和构造函数的信息进行编程访问.它允许在安全限制内使用反射的字段,方法和构造函数对其底层对等进行操作. 二.java.lang.reflect AccessibleObject类 java.lang.reflect.AccessibleObject类是Field,Method和Constructor类对象的基类. 它提供了将反射对象标记为在使用它时抑制默认Java

java.lang.instument包超详解

1 java.lang.instrument简介 Java5之后,增加了一个包java.lang.instrument,这个包的东西很少,两个接口,ClassFileTransformer和Instrumentation,一个类ClassDefinition,还有两个Exception:IllegalClassFormatException和UnmodifiableClassException: 先剧透一下整个包最重要的接口Instrumentation提供的两个功能,总体的功能就是Instru

moon 反射机制---java.lang.reflect包

java反射机制:在运行状态中,对于一个已经加载到JVM的java对象/类 在程序中实现访问.检查.修改.描述java对象本身的信息(构造方法.方法.成员变量.类本身的信息) 这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. C++,Java,C#不是动态语言.但是JAVA有着一个非常突出的动态相关机制:Reflection, 反射是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接. 二,反射机制的作用:

java.lang.UnsatisfiedLinkError: 包名.方法名([BLjava

Tomcat启动时,输出如下错误信息: 24-May-2015 18:27:39.057 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catal

JDK源码简析--java.lang包中的基础类库

题记 JDK,Java Development Kit. 我们必须先认识到,JDK只是,仅仅是一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含量来说,还是在一个层级上,它们都是需要被编译成字节码,在JRE中运行的,JDK编译后的结果就是jre/lib下得rt.jar,我们学习使用它的目的是加深对Java的理解,提高我们的Java编码水平. 本系列所有文章基于的JDK版本都是1.7.16. 本节内容 在本节中,简析java.lang包所包

JDK框架简析--java.lang包中的基础类库、基础数据类型

题记 JDK.Java Development Kit. 我们必须先认识到,JDK不过,不过一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含量来说.还是在一个层级上,它们都是须要被编译成字节码.在JRE中执行的,JDK编译后的结果就是jre/lib下的rt.jar,我们学习使用它的目的是加深对Java的理解,提高我们的Java编码水平. 本系列全部文章基于的JDK版本号都是1.7.16. 源代码下载地址:https://jdk7.jav

简单看看jdk7源码之java.lang包01

从今天开始简单开始读一遍jdk的源码,估计这个时间会很长,慢慢啃吧....(首先说一句抱歉,因为很多图都是直接百度扣的,图太多了不能为每一个图附上原版链接,不好意思!) 在网上看了很多的教程,读源码有一定的顺序,按照包的顺序:java.lang包,java.util包,java.util.concurrent包,java.util.concurrent.atomic包,java.lang.reflect包,java.lang.annotation包,java.util.concurrent.lo

java.lang包

作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.特性——不用import 2.String String x = "abc"; <=> String x= new String("abc"); 因为public final class java.lang.String; 而String x="The number " + y;中,在JAVA中不管是什么变量或者对象,在对String进行加和时