-----------------------------------
android培训
、
java培训
、期待与您交流! --------------------------------------
关于流,流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象,通俗的可以理解为水流。io流的分类
- 根据数据类型的不同可以分为:字符流和字节流。
- 根据数据流向的不同可以分为:输入流和输出流。
字节流的操作也就是读取的过程中查询了对应的码表,字节流的读取的时候读到一个字节就返回一个字节,而字符流是读取几个字符读取时先去查询指定的码表,再将查到的字符返回。字节流可以处理任何数据类型的数据,如图片音乐等,包括二进制和对象。字符流只能读取文本数据,字符流是为了减少字节流频繁对资源进行操作,它提供了对字符串、数组等的操作,起本质上还是属于字节流 。
Java i/o流相关类的结构图
Reader、Writer、InputStream、OutputStream 在Java关于流的4个基本抽象类,其子类中我们经常使用的类有:InputStream:FileInputStream,BufferedInputStream
OutputStream:FileOutputStream,BufferedOutputStream
int read() 读取一个字符,返回的是读到的那个字符,如果读取到文件的末尾处,就返回-1。int read(char [] ch) 将读取到的字符存入指定的数组中,返回的是读到的字符个数,如果读到末尾也是返回-1。
void close() 将当前打开的流对象关闭,这实质上是在调用系统的功能,在使用完流之后,希望释放资源。在其子类BufferedReader中,提供了更为方便的行读取。void write(char ch) 将一个字符写入到流中。void write(char [] ch) 写入一个字符数组到流中。void write(String str) 写入一个字符串到流中。
void write(String str , int off , int len) / void write(String str , int off , int len) 写入字符串/字符数组的一部分到流中。void flush() 刷新该流的缓冲,将流中的内容刷新到目标。void close() 关闭正在占用的流资源,但是在关闭之前会先调用flush(),将数据刷新到目的地。在其子类中BufferedWriter提供了通用跨平台的换行符方法,newLine()。使用字符流读取文件的实例代码:File copyFile = new File("d:\\read.txt"); File toFile = new File("d:\\copyFile.txt"); FileReader fr = null; FileWriter fw = null; try { fr = new FileReader(copyFile); fw = new FileWriter(toFile); char buffer[] = new char[1024]; //一般定义为1024的整数倍 int num = 0; while ((num = fr.read(buffer)) != -1) { fw.write(new String(buffer, 0, num)); //读到多长的字符即写入多长的字符 fw.flush(); } } catch (IOException e) { e.printStackTrace(); }finally{ try { fw.close(); fr.close(); } catch (IOException e) { e.printStackTrace(); } }
-----------------------------------
android培训、
java培训
、期待与您交流! --------------------------------------