——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
字符流的缓冲区: 缓冲区的出现提高了对流的操作效率。 原理:其实就是将数组进行封装。 对应的对象:BufferedWriter:特有方法: newLine():跨平台的换行符。 BufferedReader: 特有方法: readLine():一次读一行,到行标记时,将行标记之前的字符数据作为字符串返 回。当读到末尾时,返回 null。 在使用缓冲区对象时,要明确,缓冲的存在是为了增强流的功能而存在,所以在建立缓冲区对象时,要先有流对象存在。 其实缓冲内部就是在使用流对象的方法, 只不过加入了数组对数据进行了临时存储。 为了提高操作数据的效率。代码上的体现: 写入缓冲区对象: //建立缓冲区对象必须把流对象作为参数传递给缓冲区的构造函数。 BufferedWriter bufw = new BufferedWriter(new FileWriter(“buf.txt”)); bufw.write(“abce”);//将数据写入到了缓冲区。 bufw.flush();//对缓冲区的数据进行刷新。将数据刷到目的地中。 bufw.close();//关闭缓冲区,其实关闭的是被包装在内部的流对象.读取缓冲区对象: BufferedReader bufr = new BufferedReader(new FileReader(“buf.txt”)); String line = null; //按照行的形式取出数据。取出的每一个行数据不包含回车符。 while((line=bufr.readLine())!=null) { System.out.println(line); } bufr.close();readLine():方法的原理: 其实缓冲区中的该方法,用的还是与缓冲区关联的流对象的 read 方法。 只不过,每一次读到一个字符,先不进行具体操作,先进行临时存储。 当读取到回车标记时,将临时容器中存储的数据一次性返回。字节流: 抽象基类:InputStream,OutputStream。 字节流可以操作任何数据。 注意:字符流使用的数组是字符数组。char [] chs 字节流使用的数组是字节数组。byte [] bt FileOutputStream fos = new FileOutputStream(“a.txt”); fos.write(“abcde”);//直接将数据写入到了目的地。 fos.close();//只关闭资源。 FileInputStream fis = new FileInputStream(“a.txt”); //fis.available();//获取关联的文件的字节数。 //如果文件体积不是很大,可以这样操作。 byte[] buf = new byte[fis.available()];//创建一个刚刚好的缓冲区。 //但是这有一个弊端,就是文件过大,大小超出 jvm 的内容空间时,会内存溢出。 fis.read(buf); System.out.println(new String(buf));示例:用字节缓冲流复制一张图片,代码如下: BufferedInputStream bufis = new BufferedInputStream(new FileInputStream(“1.jpg”)); BufferedOutputStream bufos = new BufferedOutputStream(new FileOutptStream(“2.jpg”)); int by = 0; while((by=bufis.read())!=-1) { bufos.write(by); } bufos.close(); bufis.close();转换流: 特点: 1,是字节流和字符流之间的桥梁。 2,该流对象中可以对读取到的字节数据进行指定编码表的编码转换。 什么时候使用呢? 1,当字节和字符之间有转换动作时。 2,流操作的数据需要进行编码表的指定时。 具体的对象体现: 1,InputStreamReader:字节到字符的桥梁。 2,OutputStreamWriter:字符到字节的桥梁。 这两个流对象是字符流体系中的成员。 那么它们有转换作用,而本身又是字符流。所以在构造的时候,需要传入字节流对象进来。可以和流相关联的集合对象 Properties. Map |–Hashtable |–Properties Properties:该集合不需要泛型,因为该集合中的键值对都是 String 类型。 1,存入键值对:setProperty(key,value); 2,获取指定键对应的值:value getProperty(key); 3,获取集合中所有键元素: Enumeration propertyNames(); 在 jdk1.6 版本给该类提供一个新的方法。 Set stringPropertyNames(); 4,列出该集合中的所有键值对,可以通过参数打印流指定列出到的目的地。 list(PrintStream); list(PrintWriter); 例:list(System.out):将集合中的键值对打印到控制台。 list(new PrintStream(“prop.txt”)):将集合中的键值对存储到 prop.txt 文件中。 5,可以将流中的规则数据加载进行集合,并称为键值对。 load(InputStream): jdk1.6 版本。提供了新的方法。 load(Reader): 注意:流中的数据要是 “键=值” 的规则数据。 6,可以将集合中的数据进行指定目的的存储。 store(OutputStram,String comment)方法。 jdk1.6 版本。提供了新的方法。 store(Writer ,String comment): 使用该方法存储时,会带着当时存储的时间。
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-