Java --- IO流

一 IO流框架

在这里插入图片描述

二 IO知识点

(一) 基本概念

1 IO流

A 什么是IO流
	I/O,即输入(Input)输出(Output),IO流指的是数据像连绵的流体一样进行传输。

B 作用
	在本地磁盘或网络上传输(读/写)数据

C 分类
	按数据流向分:  输入流 输出流
	按操作方式分:  字节流: InputStream OutputStream  
				 字符流: Reader Writer

2 IO流体系

在这里插入图片描述
在这里插入图片描述

3 IO流操作异常

A 什么是异常: 程序出错

B 异常分类:  异常Exception 和错误Error

C 处理异常:  抛出或捕获

4 File类

A 概念
	文件,文件夹,一个File对象代表磁盘上的某个文件或文件夹

B 构造方法
	 File(String pathname)
	 File(String parent, String child)
	 File(File parent, String child)

C 成员方法
	   createNewFile():创建文件
	   mkdir()和mkdirs():创建目录
	   isDirectory():判断File对象是否为目录
	   isFile():判断File对象是否为文件
	   exists():判断File对象是否存在
	   getAbsolutePath():获取绝对路径
		    从本地磁盘开始的路径
		    举例:C:\Users\itcast\Desktop
	   getPath():获取文件的相对路径
		    相对某一位置的路径
		    Java项目中,相对路径从项目名开始
	   getName():获取文件名
	   list():获取指定目录下所有文件(夹)名称数组
	   listFiles():获取指定目录下所有文件(夹)File数组

(二) IO流的使用

1 数据流读写步骤:

    //1 创建字符/字节输入流对象, 关联数据源文件
    //2 创建字符/字节输出流对象, 关联目的地文件
    //3 定义变量,记录读取到的内容
    //4 循环读取, 只有条件满足就一直读,将读到的内容赋值给变量
    //5 将读到的内容写入目的地文件中
    //6 释放资源

2 在实际操作中, 我们最常用高效字符流和高效字节流.

A 字符缓冲流拷贝文件的标准代码: 一次读取一个字符数组

高效字符流:  字符缓冲流自带缓冲区, 大小是8192个字符, 就是16KB
底层:  是按字符数组进行读写的
   public class TestUtils {
   
       public static void main(String[] args) throws IOException {
   			 BufferedReader br = new BufferedReader(new FileReader("C:\Users\pc\Desktop\1.txt"));
           	 BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\1.txt"));
   	       	 int len;
   		     while((len = br.read()) != -1) { 
   		            bw.write(len);
   		     }
   		     br.close();
   		     bw.close();		
   	   }
   }
   public class TestUtils {
   
       public static void main(String[] args) throws IOException {
   			 BufferedReader br = new BufferedReader(new FileReader("C:\Users\pc\Desktop\1.txt"));
           	 BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\1.txt"));
           	 char [] chs = new char[2048];
   	       	 int len;
   		     while((len = br.read(chs)) != -1) { 
   		            bw.write(chs, 0, len);
   		     }
   		     br.close();
   		     bw.close();		
   	   }
   }

B 字节缓冲流拷贝图片的标准代码: 一次读取一个字节数组

高效字节流:  字节缓冲流自带缓冲区, 大小是8192个字节, 就是8KB
底层:  是按字节数组进行读写的
	public class TestUtils {
	
	    public static void main(String[] args) throws IOException {
			BufferedInputStream bis = new BufferedInputStream(new FileInputStream("C:\\Users\\Public\\Pictures\\Sample Pictures\\flower.jpg"));
        	BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("E:\\flower.jpg"));
        	int len;
	        while((len = bis .read()) != -1) {
	            bos.write(len);
	        }
	        bis .close();
	        bos.close();
		}
	}
	public class TestUtils {
	
	    public static void main(String[] args) throws IOException {
			BufferedInputStream bis = new BufferedInputStream(new FileInputStream("C:\\Users\\Public\\Pictures\\Sample Pictures\\flower.jpg"));
        	BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("E:\\flower.jpg"));
        	byte[] bytes = new bytes [2048];
        	int len;
	        while((len = bis .read(bytes )) != -1) {
	            bos.write(bytes , 0, len);
	        }
	        bis.close();
	        bos.close();
		}
	}

C 字符缓冲流拷贝文件 一次读取一行

   public class TestUtils {
   
       public static void main(String[] args) throws IOException {
   			 BufferedReader br = new BufferedReader(new FileReader("C:\Users\pc\Desktop\1.txt"));
           	 BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\1.txt"));
   	       	 String str;
   		     while((str= br.readLine() ) != null) { 
   		            bw.write(str);
   		            //注意: 不同操作系统有不同的换行符
   		            bw.newLine();
   		     }
   		     br.close();
   		     bw.close();		
   	   }
   }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章