IO流-字符输出流、字节数组流(七)
-
字符输出流
在java的IO流中专门提供了用于字符输出的流对象PrintWirter.该对象具有自动刷新缓冲字符输出流,特点是可以按行写出字符,并且可通过println();方法试下你自动换行。
import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.PrintWriter; public class LineNumberDemo3 { public static void main(String[] args) { BufferedReader br=null; PrintWriter pw=null; try { //让我们明白一个道理:输入流和输出流不一定是成对出现的,你输入流可以是处理流,输出流可以是节点流 //输入流是就考虑输入流的过程,至于这个内容你要怎么输出到程序的外部,你自己来决定 br=new BufferedReader(new InputStreamReader(new FileInputStream("d:/sxt.txt"))); pw=new PrintWriter("d:/sxt4.txt");//PrintWriter直接是一个字符输出流,,且自带flush()刷新功能 String temp=""; int i=1; while ((temp=br.readLine())!=null){ pw.println(i+","+temp); i++; } }catch (Exception e){ e.printStackTrace(); }finally { try { if (br !=null){ br.close(); } if (pw!=null){ pw.close(); } }catch (Exception e){ e.printStackTrace(); } } } }
-
字节数组流
ByteArrayInputStream和ByteArrayOutputStream经常用在需要流和数组之间的转换的情况!
-
字节数组输入流
说白了,FileInputStream是把文件当做数据源。ByteArrayInputStream则是把内存中的“字节数组对象”当做数据源。
import java.io.ByteArrayInputStream; public class ByteArrayInputDemo { public static void main(String[] args) { byte[] arr="abcdefg".getBytes(); ByteArrayInputStream bis=null; StringBuilder sb=new StringBuilder(); try { //该构造方法的参数是一个字节数组,这个字节数组就是数据源 bis=new ByteArrayInputStream(arr); int temp=0; while ((temp=bis.read())!=-1){ sb.append((char)temp); } System.out.println(sb.toString()); }finally { try { }catch (Exception e){ e.printStackTrace(); } } } }
-
字节数组输出流
ByteArrayOutputStream流对象是将流中的数据写入到字节数组中。
import java.io.ByteArrayOutputStream; public class ByteArrayOutputDemo { public static void main(String[] args) { ByteArrayOutputStream bos=null; try { StringBuilder sb=new StringBuilder(); bos=new ByteArrayOutputStream(); bos.write('a'); bos.write('b'); bos.write('c'); byte[] arr=bos.toByteArray();//toByteArray()就是把字节数组输出流转换成字节数组的一个方法 for (int i=0;i<arr.length;i++){ sb.append((char) arr[i]); } System.out.println(sb.toString()); }finally { try { if (bos!=null){ bos.close(); } }catch (Exception e){ e.printStackTrace(); } } } }
-