Java文件(io)编程——文件字节流的使用
案例1:
演示FileInputStream类的使用(用FileInputStream的对象把文件读入到内存)
首先要在E盘新建一个文本文件,命名为test.txt,输入若干字符
1 public class Demo_2 { 2 3 public static void main(String[] args) { 4 File f=new File("e:\\test.txt"); //得到一个文件对象f,指向e:\\test.txt 5 FileInputStream fis=null; 6 7 try { 8 fis=new FileInputStream(f); //因为File没有读写的能力,所以需要使用FileInputStream 9 10 byte []bytes=new byte[1024]; //定义一个字节数组,相当于缓存 11 int n=0; //得到实际读取到的字节数 12 13 while((n=fis.read(bytes))!=-1){ //循环读取 14 String s=new String(bytes,0,n); //把字节转成String(只转0到n位) 15 System.out.println(s); 16 } 17 18 } catch (Exception e) { 19 e.printStackTrace(); 20 }finally{ //关闭文件流必须放在这里 21 try { 22 fis.close(); 23 } catch (IOException e) { 24 e.printStackTrace(); 25 } 26 } 27 } 28 }
运行程序,控制台输出test.txt中输入的字符。
案例2:
演示FileOutputStream的使用(把输入的字符串保存到文件中)
1 public class Demo_3 { 2 3 public static void main(String[] args) { 4 5 File f=new File("e:\\ss.txt"); 6 FileOutputStream fos=null; //字节输出流 7 8 try { 9 fos=new FileOutputStream(f); 10 11 String s="你好,疯子!\r\n"; //\r\n为了实现换行保存 12 String s2="24个比利"; 13 14 fos.write(s.getBytes()); 15 fos.write(s2.getBytes()); 16 } catch (Exception e) { 17 e.printStackTrace(); 18 }finally{ 19 try { 20 fos.close(); 21 } catch (IOException e) { 22 e.printStackTrace(); 23 } 24 } 25 } 26 }
打开E盘名为ss.txt的文本文档,存在输入的字符。
案例3:图片拷贝
首先在E盘准备一张图片,命名为a.jpg
1 public class Demo_4 { 2 3 public static void main(String[] args) { 4 //思路 先把图片读入到内存,再写入到某个文件 5 //因为图片是二进制文件,只能用字节流完成 6 7 FileInputStream fis=null; //输入流 8 9 FileOutputStream fos=null; //输出流 10 try { 11 fis=new FileInputStream("e:\\a.jpg"); 12 fos=new FileOutputStream("d:\\a.jpg"); 13 14 byte []bytes=new byte[1024]; 15 int n=0; //记录实际读取到的字节数 16 while((n=fis.read(bytes))!=-1){ //read函数返回读入缓冲区的字节总数 17 fos.write(bytes); //输出到指定文件 18 } 19 } catch (Exception e) { 20 e.printStackTrace(); 21 }finally{ 22 try { 23 fis.close(); 24 fos.close(); 25 } catch (Exception e) { 26 e.printStackTrace(); 27 } 28 } 29 } 30 }
打开D盘,点击a.jpg,图片正常显示即运行成功。