Java I/O

Java中的字符是Unicode编码,是双字节的
 
输入流都是抽象类InputStream类或抽象类Reader的子类
输出流都是抽象类OutputStream或抽象类Writer的子类
 
InputStream常用方法:
read():从输入流中读取数据的下一个字节,返回0~255范围内的int字节值,到达末尾没有可用字节,返回-1
read(byte[] b):读取一定长度字节
mark(int readlimit):在输入流的当前位置放置一个标记,readlimit参数告知此输入流在标记位置失效之前允许读取的字节数
reset():将输入指针返回当前所做的标记处
skip(long n):跳过输入流上的n个字节并返回实际跳过的字节数
markSupported()如果当前流支持mark()/reset()操作就返回true
Close()关闭此输入流并释放与该流关联的所有系统资源
 
OutputStream常用方法:
write():将指定的字节写入此输出流
write():将b个字节从指定的byte数组写入此输出流
write():将指定byte数组中从偏移量off开始的len个字符写入此输出流
flush():彻底完成或输出并清空缓存区
close():关闭输出流
 
JAVA中mark()和reset()用法的通俗理解

 

mark就像书签一样,在这个BufferedReader对应的buffer里作个标记,以后再调用reset时就可以再回到这个mark过的地方。mark方法有个参数,通过这个整型参数,你告诉系统,希望在读出这么多个字符之前,这个mark保持有效。读过这么多字符之后,系统可以使mark不再有效,而你不能觉得奇怪或怪罪它。这跟buffer有关,如果你需要很长的距离,那么系统就必须分配很大的buffer来保持你的mark。    
 
    //eg.    
 
    //reader      is      a      BufferedReader    
 
      
 
    reader.mark(50);//要求在50个字符之内,这个mark应该保持有效,系统会保证buffer至少可以存储50个字符    
 
    int      a      =      reader.read();//读了一个字符    
 
    int      b      =      reader.read();//又读了一个字符    
 
      
 
    //做了某些处理,发现需要再读一次    
 
    reader.reset();    
 
    reader.read();//读到的字符和a相同    
 
    reader.read();//读到的字符和b相同
 
 
InputStream,OutputStream负责字节流,Reader,Writer负责字符流
 
FileOutputStream对象时,可以指定不存在的文件名,但此文件不能是一个已被其他程序打开的文件
 
BufferedInputStream与BufferedOutputStream都有两种构造方法,一种默认创建有32个字节的缓存区,另一个根据指定大小创建缓存区
 
 
BufferedReader常用:
read():读取单个字符
readLine():读取一个文本行,并将其返回为字符串,若无数据可读,则返回null
BufferedWriter类中的方法都返回void,常用的方法如下
write(String s, int off, int len)
flush()
newLine():写入一个行分隔符 
posted @ 2018-10-29 19:07  Zzzwww  阅读(188)  评论(0编辑  收藏  举报
/* 看板娘 */