字节流与字符流
1: 字节流 ; 一般情况下用来处理二进制(非文档的内容)
1: FileInputStream
1 package com.lv.study.am.first; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.IOException; 7 8 public class TestFileInputStream { 9 10 public static void main(String[] args) { 11 12 //File 文件或者目录对象 13 //FileInputStream 操作文件的流对象 14 15 //读取摸个文件里面的内容 16 //1:得到这个文件的对象 17 //2:使用流对象去读取这个文件 18 19 //拼接我们的文件路径D:\Study\first\DemoDay31 20 String path="D:"+File.separator+"Study"+File.separator+"first"+File.separator+"DemoDay31"+File.separator+"test.txt"; 21 22 FileInputStream fis=null; 23 24 25 try { 26 File file=new File(path); 27 fis=new FileInputStream(file); 28 29 //一次只会读取一个字节,中文是两个字节 30 int result; 31 while((result=fis.read())!=-1){ 32 //字节流去处理中文的时候会出现问题 33 System.out.println((char)result); 34 } 35 36 } catch (Exception e) { 37 //可以直接捕获处理我们的Exception 38 //某些情况下,你需要针对不同的异常做不同的操作,就要一个一个去捕获 39 e.printStackTrace(); 40 }finally{//我们需要关闭流 41 42 if(null!=fis){//先判断是不是为空 43 try { 44 fis.close(); 45 //我们在关闭流的时候也可能会出现异常 46 } catch (IOException e) { 47 e.printStackTrace(); 48 } 49 } 50 51 } 52 53 } 54 55 }
2:FileOutputStream(file,true) false默认理解为新建一个文件 true 在当前文件末尾进行添加
1 package com.lv.study.am.first; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 9 public class TestFileOutputStream { 10 11 public static void main(String[] args) { 12 13 // 1:首先构建一个File对象 14 // 2:构建一个流对象来操作这个File对象 15 String path = "D:" + File.separator + "Study" + File.separator + "first" + File.separator + "DemoDay31" 16 + File.separator + "test.txt"; 17 18 // 我们的jdk帮我们new File对象 19 FileOutputStream fos = null; 20 21 try { 22 fos = new FileOutputStream(path);//如果文件不存在会创建一个文件 23 24 String ms="今天要下雨"; 25 byte[]bytes=ms.getBytes();//将我们的字符串转成一个字节数组 26 27 fos.write(bytes); 28 29 30 } catch (Exception e) { 31 e.printStackTrace(); 32 } finally { 33 if (null != fos) { 34 try { 35 fos.close(); 36 } catch (IOException e) { 37 // TODO Auto-generated catch block 38 e.printStackTrace(); 39 } 40 } 41 } 42 43 } 44 45 }
3:BufferedInputStream与BufferedOutputStream
1 package com.lv.study.pm.first; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileOutputStream; 8 9 import com.lv.study.am.IOUtil; 10 11 public class DemoBufferedInputOutput { 12 13 public static void main(String[] args) { 14 15 //读写一个视频资源 16 String path="D:"+File.separator+"test.mp4"; 17 String resultPath="D:"+File.separator+"study"+File.separator+"abc.mp4"; 18 19 BufferedInputStream fis=null; 20 BufferedOutputStream fos=null; 21 22 try { 23 24 //记录开始拷贝的时间 25 long start=System.currentTimeMillis(); 26 //真正做io操作的还是FileInputStream对象,但是BufferedInputStream包装了一下 27 fis=new BufferedInputStream(new FileInputStream(path)); 28 fos=new BufferedOutputStream(new FileOutputStream(resultPath)); 29 30 int result; 31 while((result=fis.read())!=-1){ 32 fos.write(result); 33 } 34 //记录结束拷贝的时间 35 long stop=System.currentTimeMillis(); 36 37 // fos.flush();//清空我们的缓冲区并且将缓冲区里面的内容写入到磁盘里面 38 // fos.close();//关闭缓冲流,关闭之前,会先清空缓冲区,之前会先入 39 System.out.println("拷贝成功,花费的时间"+(stop-start)); 40 41 } catch (Exception e) { 42 e.printStackTrace(); 43 }finally { 44 IOUtil.closeIO(fis, fos); 45 } 46 } 47 48 }
4:InputStreamReader
InputStreamReader是从字节流到字符流的桥接器:它读取字节并使用指定的字符将它们解码为字符charset
5:OutputStreamWriter
OutputStreamWriter是从字符流到字节流的桥接
2: 字符流(文档类型的内容)
1:FileReader与FileWriter
2:BufferedReader与BufferedWriter
1 package com.lv.study.pm.second; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.File; 6 import java.io.FileNotFoundException; 7 import java.io.FileReader; 8 import java.io.FileWriter; 9 10 public class TestBufferedReaderWrite { 11 12 public static void main(String[] args) { 13 14 String path = "D:" + File.separator + "Study" + File.separator + "A.txt"; 15 String resultPath = "D:" + File.separator + "Study" + File.separator + "B.txt"; 16 17 try { 18 BufferedReader br = new BufferedReader(new FileReader(path)); 19 BufferedWriter bw = new BufferedWriter(new FileWriter(resultPath, true)); 20 21 // //直接读取文档一行 22 // String readLine =br.readLine(); 23 // 24 // //换行 25 // bw.newLine(); 26 // bw.write(readLine); 27 28 // //多行 29 // String readLine; 30 // while((readLine=br.readLine()).length()>0){ 31 // //换行 32 // bw.newLine(); 33 // bw.write(readLine); 34 // } 35 // 36 37 /* 38 * aaaa 39 * 40 * bbbbbb 41 */ 42 //有空格的 43 int result; 44 while ((result = br.read()) != -1) { 45 bw.write(result); 46 } 47 48 bw.close(); 49 br.close(); 50 51 } catch (Exception e) { 52 e.printStackTrace(); 53 } 54 55 } 56 57 }