码迷,mamicode.com
首页 > 编程语言 > 详细

JAVASE学习笔记:第十一章 数据流

时间:2015-06-16 16:46:43      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

一、File类,所在包java.io
                File f=new File("E:\\工具\\FeiQ\\1.txt");//创建文件三种方式
  File f1=new File("E:\\工具\\FeiQ\\","1.txt");
  File f2=new File("E:\\工具\\FeiQ");
  File f3=new File("F:\\t1\\t2\\t3");
    
  boolean b=f.isFile();//判断是否文件
  System.out.println(b);
  boolean b1=f2.isDirectory();//判断是否目录
  System.out.println(b1);
  long l=f1.length();  //求文件长度,单位:字节
  System.out.println(l);
  long l1=f1.lastModified();//返回距 1970-1-1的毫秒数
  Date d=new Date(l1);
  SimpleDateFormat sdf=new SimpleDateFormat();
  sdf.applyPattern("yyyy-MM-dd HH:mm:ss sss");
  String s=sdf.format(d);
  System.out.println(s);//打印最后修改时间
  boolean b2=f1.isHidden();//判断是否隐藏
  boolean b3=f1.canWrite();//判断是否可写
  boolean b4=f1.exists(); //判断文件或目录是否存在
  if(f3.getParentFile()!=null){
   System.out.println(f3.getPath());//打印路径
  }
  //创建目录
  System.out.println(f3.mkdirs());
  System.out.println(f1.getName());//打印文件名
  //打印目录里的所有文件
  File [] files=f2.listFiles([过滤器]);
  for (int i=0;i<files.length;i++){
   System.out.println(files[i]);
  }
  
     }
二、流是一组有序的,有起点和终点的字节集合,是对计算机中数据传输的总称或者抽象。
    字节流:按照传输的单位为字节的流叫字节流
    字符流:按照传输的单位为字符的流叫字符流
    按照传输的方向划分:输入流和输出流,程序从数据源中的数据流读取数据叫输入流,从当前程序向流中写入数据将信息送至目的端
    细分为:字节输入流、字节输出流  字符输入流  字符输出流
    1、InputStream  字节输入流,所在包java.io
       FileInputStream是InputStream的子类
    2、OutputStream  字节输出流,所在包java.io
       FileOutputStream是outputStream的子类
       如果在写入文件时,文件不存在,会自动创建一个文件但目录不会自动创建
       写入时换行符用\r \n,linux下用\n

     eg:复制文件到另一个磁盘
        public static void main(String[] args)  {
     /*
      * 读取飞秋文件
      */
   
    FileInputStream in=null;
    FileOutputStream out=null;
 try {
  //创建文件输入流,将文件写入字符串S
  in = new FileInputStream("C:\\Program Files\\feiq\\FeiqCfg.xml");
  //创建文件输出流,将字符串S输出到D盘a.txt,true表示追加输出
  out=new FileOutputStream("D:\\a.txt",false);
   byte[] b=new byte[1024];//创建1024字节
     int len=0;
   
     while((len=in.read(b))!=-1){
      out.write(b, 0, len);
     }
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  finally{
   if(in!=null){
    try {
    in.close();//关闭输入流
     }
    catch (IOException e) {
    // TODO Auto-generated catch block
      e.printStackTrace();
     }
    }
   if(out!=null){
    try {
    out.close();//关闭输出流
     }
    catch (IOException e) {
    // TODO Auto-generated catch block
      e.printStackTrace();
     }
    }
  
  }
   }

三、字符输入流 FileReader  FileReader是InputStreamReader的子类  
    字符输出流 FileWriter  FileWriter是OutputStreamWriter的子类
    File source=new File("D:\\a.txt");
  File dest=new File("E:\\cc.txt");
  FileReader in=null;
  FileWriter out=null;
  try {
   in=new FileReader(source);
   out=new FileWriter(dest);
   char [] chs=new char[1024];
   int len=0;
   while((len=in.read(chs))!=-1){

    out.write(chs, 0, len);

   }
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  finally{
   if(in!=null){
    try {
     in.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
   if(out!=null){
    try {
     out.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  }
以上四个流都是节点流(跟节流)
四、压缩输出流ZipOutputStream

             File source=new File("d:\\a.txt");
      File dest=new File("d:\\1.rar");
      InputStream in=new FileInputStream(source);
      ZipOutputStream zout=new ZipOutputStream(new FileOutputStream(dest));
      ZipEntry zip=new ZipEntry(source.getName());//定义ZIP入口
      zout.putNextEntry(zip);//放入下一个入口
      int tem=0;
      while((tem=in.read())!=-1){
       zout.write(tem);
      }
      in.close();
      zout.close();
五、过滤流
给节点流增加某些功能,必须借助于节点流使用
FilterOutputStream
1、BufferedOutputStream是FilterOutputStream的子类,实现加缓存功能
     File  file=new File("d:\\a.txt");
  OutputStream  out=new  FileOutputStream(file,true); 
         BufferedOutputStream  bf=new  BufferedOutputStream(out);
         String  s="我喜欢java11";
         byte  []  b=  s.getBytes();
         bf.write(b);
                bf.flush();
                bf.close();

2、BufferedReader的readline方法
                 Reader  re=new FileReader("d:\\a.txt");
  BufferedReader  br=new  BufferedReader(re);
          String  s= br.readLine();
                System.out.println(s);
六、转换流 把字符流转成字节流或把字节流转换成字符流叫转换流InputStreamReader
        InputStreamReader  in=new   InputStreamReader(new FileInputStream("d:\\a.txt")); //定义转换流
  char  c[] =new  char[1024];
  int len= in.read(c);
  System.out.println(new  String(c));
  InputStreamReader  in1=new  InputStreamReader(System.in);//将字符流转换成字节流
  BufferedReader  bf=new  BufferedReader(in1);//使用buffer流的readline方法
  String  s1= bf.readLine();
  System.out.println(s1);
 
七、对象流
ObjectOutputStream  对象输出流
方法用writeobject
ObjectInputStream   对象输入流
方法用readobject

 

 

 

作业:1、读取一张图片,把实际读取的字节个数打印出来,再打印了多少次
      2、复制一张图片到另一个磁盘
      3、复制超大文件到副一个磁盘,添加百分比

JAVASE学习笔记:第十一章 数据流

标签:

原文地址:http://blog.csdn.net/cb_fxb/article/details/46519969

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!