字节流操作四大步骤:
1,创建源
2,选择流
3,执行操作
4,通知关闭资源
FileInPutStream类:字节输入流
从文件中读入信息:
1 package cn.ftf.io; 2 3 import java.io.FileInputStream; 4 import java.io.FileNotFoundException; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.OutputStream; 9 10 /** 11 * 四个步骤,分段读取 12 * 1.创建源 13 * 2,选择流 14 * 3,操作 15 * 4,释放资源 16 * 17 * @author 房廷飞 18 */ 19 20 21 public class TestIO05 { 22 public static void main(String[] args) { 23 //创建源 24 File src=new File("D:\\myjavacode\\JavaPractise01\\src\\cn\\ftf\\io\\abc.txt"); 25 InputStream is = null; 为了方便关闭流,都是这样写的 26 try { //try-catch处理异常,都是这样 27 is=new FileInputStream(src); //实例化字节流对象 28 byte[]flush=new byte[1024]; //做一个数组,做缓冲容器,提高效率,数组容量是一次读取的字节数量 29 int len=-1; //用于接收字节长度 30 while((len=is.read(flush))!=-1) { //.read(字节数组),读一定的长度,可查api文档 31 String str=new String(flush,0,len); //解码,由字符数组构建字符串 32 System.out.println(str); 33 } 34 35 } catch (FileNotFoundException e) { 36 // TODO Auto-generated catch block 37 e.printStackTrace(); 38 } catch (IOException e) { 39 // TODO Auto-generated catch block 40 e.printStackTrace(); 41 }finally { //关闭字节流,都是这样写的 42 try { 43 if(null!=is) { 44 is.close(); 45 } 46 } catch (IOException e) { 47 // TODO Auto-generated catch block 48 e.printStackTrace(); 49 } 50 } 51 } 52 }
字节输出流:FileOutputStream
将信息写到文件
1 package cn.ftf.io; 2 3 import java.io.File; 4 import java.io.FileNotFoundException; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.OutputStream; 8 9 //一切四步骤:1,创建源2,选择流3,操作4,释放资源 10 11 public class TestIO05{ 12 public static void main(String[] args) { 13 //创建源 14 File file=new File("D:\\myjavacode\\JavaPractise01\\src\\cn\\ftf\\io\\test002.txt"); 15 //选择流 16 OutputStream os=null; 17 18 //操作 19 try { 20 os=new FileOutputStream(file,true); //实例化输出流对象,//默认是刷新写,跟写的话加true (file,true) 21 String msg="hello 房廷飞!!!"; 22 byte[] bt= msg.getBytes(); //编码,将字符串转化为字节数组,可查api文档查到 23 try { 24 os.write(bt); // 将字节数组写入文件 25 os.flush(); //写完清空缓存,养成习惯,都这样写的 26 } catch (IOException e) { 27 // TODO Auto-generated catch block 28 e.printStackTrace(); 29 } 30 } catch (FileNotFoundException e) { 31 // TODO Auto-generated catch block 32 e.printStackTrace(); 33 34 } 35 finally { //通知关闭资源,标准格式 36 try { 37 if(os!=null) { 38 os.close(); 39 } 40 }catch (IOException e) { 41 // TODO Auto-generated catch block 42 e.printStackTrace(); 43 } 44 } 45 } 46 }
文件拷贝:字节输入流,输出流合二为一
1 package cn.ftf.io; 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 import java.io.InputStream; 9 import java.io.OutputStream; 10 11 public class CopyFile { 12 13 public static void main(String[] args) { 14 copyFile("D:/myjavacode/JavaPractise01/src/cn/ftf/io/abc.txt","C:/Users/user/Desktop/hello.py"); 15 } 16 public static void copyFile(String first,String second) { 17 //1,创建源 18 File file1=new File(first); 19 File file2=new File(second); 20 //2,选择流 21 InputStream str1=null; 22 OutputStream str2=null; 23 24 //3,执行操作 25 try { 26 str1=new FileInputStream(file1); 27 str2=new FileOutputStream(file2); 28 byte[] flush=new byte[1024]; 29 try { 30 while(str1.read(flush)!=-1) { 31 str2.write(flush); 32 str2.flush(); 33 } 34 } catch (IOException e) { 35 // TODO Auto-generated catch block 36 e.printStackTrace(); 37 } 38 } catch (FileNotFoundException e) { 39 // TODO Auto-generated catch block 40 e.printStackTrace(); 41 } 42 //4,关闭资源 //分别关闭,先打打开的后关闭 43 if(str2!=null) { 44 try { 45 str2.close(); 46 } catch (IOException e) { 47 // TODO Auto-generated catch block 48 e.printStackTrace(); 49 } 50 } 51 if(str1!=null) { 52 try { 53 str1.close(); 54 } catch (IOException e) { 55 // TODO Auto-generated catch block 56 e.printStackTrace(); 57 } 58 } 59 } 60 }