java中IO的一些细节的复习
2012-07-23 10:43
197 查看
Java的高级部分
Skip表示跳过流中多少个字节后进行读取,available表示可以从当前流中不受阻碍的读取的字节数,(加入网络流中有人往里面输入了30个字节,那么我们的读取流就可以从中读取的不受阻碍的字节数就是30),mark就是为我们的流中设置一个标志,mark(int readlimit)readlimit参数表示可以从标志处往后读取的字节数,mark一般与reset一起结合使用,reset表示重新回到我们标志处进行流中数据的读取,markSupported()表示是否可以进行标志的设置,close关闭流,我们竟然有了垃圾回收机制,那么我们为什么还需要对流进行关闭?其实当我们打开一个流的时候,我们的java程序就建立了一个实例对象,而且我们的操作系统其实也建立一个关于流的对象,我们的垃圾回收机制只是负责我们的java实例对象的回收,并不能对我们的操作系统的里面的资源进行回收,所以为了节省内存空间,我们最好自己回收操作系统里面建立的流对象,skip、mark、reset这些方法并不能在字节流中使用,只能够在包装流才能够使用
这里需要提示的是:我们每次调用输出流的时候,我们最好调用一下flush,把输出流给刷出去,这样可以避免有些数据可能停留在内存缓存区中,而没有刷到IO设备中去。但是我们又想到另外一个问题,我们用flush刷出去,为什么不直接关闭(close)关闭这个输出流呢?关闭输出流也可能把数据直接给刷出去。
这里需要注意的一点是:在java中所说的输入、输出都是相对于应用程序而言。
这是管道流,用于在两个线程之间的数据的读取和写入
字符编码
字节是计算机最底层的,一般不会涉及编码方式,只有当字节构成的字符的时候,才会存在编码的。所以我们的inputStream、outputStream是不涉及编码的,只有reader、writer、string这些字符才会涉及到编码
BufferedWriter里面有一个newLine这是一个换行符,可以针对任何类型的操作系统的换行符。非常方便。
因为inputStreamReader、outputStreamWriter这两个类都会读、写一个字节就会把字节转换成一个字符,这样就会频繁的处于转换中。不好。
在java程序中可以用Process类的实例对象来表示子进程,子进程的标准输入和输出不在连接到键盘和显示器,而是以管道流的形式连接到父进程的一个输出流和输入流对象上-à好好理解这句代码就能看懂那个程序。
Skip表示跳过流中多少个字节后进行读取,available表示可以从当前流中不受阻碍的读取的字节数,(加入网络流中有人往里面输入了30个字节,那么我们的读取流就可以从中读取的不受阻碍的字节数就是30),mark就是为我们的流中设置一个标志,mark(int readlimit)readlimit参数表示可以从标志处往后读取的字节数,mark一般与reset一起结合使用,reset表示重新回到我们标志处进行流中数据的读取,markSupported()表示是否可以进行标志的设置,close关闭流,我们竟然有了垃圾回收机制,那么我们为什么还需要对流进行关闭?其实当我们打开一个流的时候,我们的java程序就建立了一个实例对象,而且我们的操作系统其实也建立一个关于流的对象,我们的垃圾回收机制只是负责我们的java实例对象的回收,并不能对我们的操作系统的里面的资源进行回收,所以为了节省内存空间,我们最好自己回收操作系统里面建立的流对象,skip、mark、reset这些方法并不能在字节流中使用,只能够在包装流才能够使用
这里需要提示的是:我们每次调用输出流的时候,我们最好调用一下flush,把输出流给刷出去,这样可以避免有些数据可能停留在内存缓存区中,而没有刷到IO设备中去。但是我们又想到另外一个问题,我们用flush刷出去,为什么不直接关闭(close)关闭这个输出流呢?关闭输出流也可能把数据直接给刷出去。
这里需要注意的一点是:在java中所说的输入、输出都是相对于应用程序而言。
这是管道流,用于在两个线程之间的数据的读取和写入
字符编码
字节是计算机最底层的,一般不会涉及编码方式,只有当字节构成的字符的时候,才会存在编码的。所以我们的inputStream、outputStream是不涉及编码的,只有reader、writer、string这些字符才会涉及到编码
BufferedWriter里面有一个newLine这是一个换行符,可以针对任何类型的操作系统的换行符。非常方便。
因为inputStreamReader、outputStreamWriter这两个类都会读、写一个字节就会把字节转换成一个字符,这样就会频繁的处于转换中。不好。
在java程序中可以用Process类的实例对象来表示子进程,子进程的标准输入和输出不在连接到键盘和显示器,而是以管道流的形式连接到父进程的一个输出流和输入流对象上-à好好理解这句代码就能看懂那个程序。
相关文章推荐
- java关于网络编程的一些细节的复习
- JAVA项目复习的一些小细节
- JAVA复习之JAVA中的一些小细节
- 复习系列之Java1(类与对象的一些小细节)
- Java小白进阶之四---说说IO流中的一些小细节
- JavaIo编程基础复习
- Java transient关键字使用小结及一些需要注意的细节
- java IO复习(三)
- JAVA随笔——Java复习与IO输入输出流
- Java IO一些理解和demo
- Java中类继承、接口实现的一些要注意的细节问题
- java中的String类型的存储原理和一些细节
- 一些java小细节问题
- Java与c#的一些细节区别
- 一些小细节让你的Java程序性能大幅提高
- Java复习之IO缓冲流
- 算法竞赛一些基础问题的复习(java) 2(开灯问题、蛇形填数、TEX、wertyu)
- 一些java编程时需要注意的细节
- 重温一下Java的一些语法细节
- javaweb_09-response实现请求重定向和response的一些细节