流的概念
流(Stream)的概念代表的是程序中数据的流通,数据流是一串连续不断的数据的集合。在Java程序中,对于数据的输入/输出操作是以流(Stream)的方式进行的。可以把流分为输入流和输出流两种。程序从输入流读取数据,向输出流写入数据。
Java中的流可以按如下方式分类:
- 按流的方向不同分为:输入流、输出流
- 按处理数据的单位不同分为:字节流、字符流
- 按功能不同分为:节点流、处理流
InputStream字节输入流的层次结构图和常用用法
常用方法
OutputStream字节输出流的层次结构图与常用方法
层次结构
常用方法
字符流应用
读字符文件
public class Test{
@Test
public 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{
@Test
public void test08() throws IOException {
//确认文件是utf-8编码
File file=new File("d:/java24/text02.txt");
FileWriter fileWriter=null;
//第一个参数是为是否append
BufferedWriter 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 block
e.printStackTrace();
}finally{ //记着关闭流
//如果调用了关闭流的方法,就不用手动调bw.flush()
bw.close();
fileWriter.close();
}
}
}
字节流应用
文本文件拷贝
//字节流拷贝
@Test
public void test07(){
//FileInputStream BufferedInputStream
//FileOutputStream BufferedOutputStream
File 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 block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
bos.close();
out.close();
bis.close();
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}