流的概念
流(Stream)的概念代表的是程序中数据的流通,数据流是一串连续不断的数据的集合。在Java程序中,对于数据的输入/输出操作是以流(Stream)的方式进行的。可以把流分为输入流和输出流两种。程序从输入流读取数据,向输出流写入数据。
Java中的流可以按如下方式分类:
- 按流的方向不同分为:输入流、输出流
- 按处理数据的单位不同分为:字节流、字符流
- 按功能不同分为:节点流、处理流
InputStream字节输入流的层次结构图和常用用法
常用方法
OutputStream字节输出流的层次结构图与常用方法
层次结构
常用方法
字符流应用
读字符文件
public class Test{@Testpublic void test07() throws IOException {//文本文件的编码方式改为utf-8// BufferedReader(Reader in) Reader我们选的是FileReader--->FileReader(File// file)File file = new File("d:/java24/text01.txt");FileReader fr = new FileReader(file);// 理解为是一个工具类,他专门用来读文本文件内容BufferedReader br = new BufferedReader(fr);while(true) {String str = br.readLine();// 一次读取一行文本if (str != null) {System.out.println(str);} else {break;}}}
}
写字符文件
public class Test{@Testpublic void test08() throws IOException {//确认文件是utf-8编码File file=new File("d:/java24/text02.txt");FileWriter fileWriter=null;//第一个参数是为是否appendBufferedWriter bw=null;try {fileWriter = new FileWriter(file,true);//第二个参数是表示是否向文件中追加内容bw=new BufferedWriter(fileWriter);bw.write("问:没声音吗1111111111");//写文本bw.newLine();//换行//bw.flush();//冲下去} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{ //记着关闭流//如果调用了关闭流的方法,就不用手动调bw.flush()bw.close();fileWriter.close();}}
}
字节流应用
文本文件拷贝
//字节流拷贝
@Testpublic void test07(){//FileInputStream BufferedInputStream//FileOutputStream BufferedOutputStreamFile file=new File("E:" + File.separator + "java6" + File.separator + "filestudy", "01.png");FileInputStream in=null;BufferedInputStream bis=null;File file2=new File("E:" + File.separator + "java6" + File.separator + "filestudy", "10.png");FileOutputStream out=null;BufferedOutputStream bos=null;try {in=new FileInputStream(file);bis=new BufferedInputStream(in);out = new FileOutputStream(file2);bos=new BufferedOutputStream(out);//读取到的字节的长度int b;//bis.read() 每次读取到的字节数,注意此处给b重新赋值 ,否则死循环while((b=bis.read())!=-1){//把b长度的字节写入到bos里bos.write(b);}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {bos.close();out.close();bis.close();in.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}