zoukankan      html  css  js  c++  java
  • 文件流

    文件:
         本质:一组数据的集合;
         目录:是特殊的文件,文件和目录;
        一组数据集合---文件(二进制,字节流)
       目录也是特殊的文件:包含文件和目录。
       文件的本质:数据的集合
       文件的本质:路径的抽象。
                   String pathname="D:\x\1.txt";
                   new File(pathname);
     
    2、文件存储在什么地方?
       内存,硬盘,磁盘,光盘等存储介质中。
     
    3、怎么创建?
       new File();-----构造器
       new File("D:\X\1.txt");
       new File("D:\x\","1.txt");
       new File(new File("D:\x\"),"1.txt");
       new File(URL);
       new File();
       注意点:主要关注的是File的属性,而不是File中的内容。
               凡是和数据的传输,读写有关的都需要使用到
               输入流和输出流。
     
    4、怎么使用?
       文件过滤器:.doc..txt.文件,目录。
       FilenameFilter
       extends,implements-----
       深度优先遍历
           核心:从做向右。
     
       广度优点遍历
           核心:层级遍历。
     
    5、流:
       为了传输数据。
       流是让物体流花的工具。
       将文件以流的形式在网络中传输。
       可以使物体的形态变化。
       输入流和输出流:没有方向,程序而言。
       读----输入流,写-----输出流
       字节流:InputStream    OutputStream
       字符流:Reader         Writer
       注意:两个字节等于一个汉字。
       汉:(7489275  5432589)字符流。
       缓冲流,处理流,节点流。。。。 
         路径(文件/目录) File
     
     File f1 = new File ("c:\aa\1.txt");      //查询一个文件路径
    ====File f1 = new File("c:\aa\","1.txt");
         System,out.println(f1.length());
     
     
    File f1 = new Filre ("c:\aa\1.txt");
    try{
    file.createNewFile();        //创建一个文件
    catch(IOException e){
         e.printStrackTrace;
    }
     
     
    //创建临时文件
     
    File file1 = file.createTempFile("112312",".txt"new File("c:\aa"));
    file1.deleteOnExit();     //jvm关闭临时文件
    while(true){     //死循环
     
    }
     
     
    //通过静态方法得到所有盘符信息
    File []listfile = File.listRoots();
    for(File l:listfile){
         System.out.printil(l);
    }
     
    //判断是不是文件夹,是不是目录,是否为空,相对路径,绝对路径
            file.isFile();
            file.isDirectory();
            file.exists();
            file.getAbsolutePath();       
            file.getParentFile(); 
     
    //文件过滤器
    public class Test {
         File f1 = new Filre ("c:\aa");
         public static void main(String[] args) throws IOException {
            String[] file3=file.list((FilenameFilter) new MyFileNameFilter());
            for (String f:file3) {
                System.out.println(f);   
            }
            file.delete();       
        }
    }
     
    class MyFileNameFilter implements FilenameFilter{
     
        public boolean accept(File dir, String name) {
            return name.endsWith(".wps");
        }
    }
     
    //删除文件
    file.delete();
     
     
     
     
     
     
         public static void main(String[] args) {
               File f1 = new File("c:\aa");
               String[] filearr = f1.list();    //只得到文件的名称
               for (String f : filearr) {
                    System.out.println(f);
               }
         }
     
     
    //深度优先遍历
    public static void deep(File dir){
         System.out.println("------>"+dir.getName());
         if(dir.isFile()){   
             return;
         }else{
        File[]fs = dir.listFiles();   //listFiles子文件   File数组接收  dir是文件的缩写
         if(fs!= null&&fs.length>0){
                  for(File f : fs){
                        deep(f);
                   }
              }
              }
         }
    public static void main(String[] args) {
    File f1 = new Filre ("c:\aa\1");
         deep(f1);
    }
     
    队列:Queue
     
    //广度优先遍历
    public static void width(File dir){
         //1.创建队列
         Queue<File> qu = new LinkedList<File>();
         //2.根元素入队
         qu.offer(dir);
     
         while(!qu.isEmpty()){
              //3.队首元素出队
                 File file3=qu.poll();
                 if(file3.isFile()){
                     System.out.println("=======这个是文件======="+file3.getName());
                 }else{
                     System.out.println("=============这个是目录============="+file3.getName());
                     File [] file4=file3.listFiles();
                     for(File f:file4){
                         //4.入队,但是必须等待前一个任务结束,才能出队
                         qu.offer(f);
                     }
              }
         }
     }
     
    public static void main(String[] args) {
    File f1 = new Filre ("c:\aa\1");
         width(f1);
    }
     
     
     
     

     
    流:
         传输方式   
     
    1.     输入流和输出流:
    2.    inputStream,outputStream:字节流
    3.    reader,writer:字符流
    4.    4877646  4864646=汤
    5.    流本身没有方向。
     
     
    public class Test03 {
         //字符流是16位的unicode编码集
       
       public static void main(String[] args) {
               File  src=new File("c:\aa\123.avi");
               File  target=new File("c:\aa\a\1.avi");
            try {
               InputStream  in = new BufferedInputStream(new FileInputStream(src),1024);  
                OutputStream  out = new BufferedOutputStream(new FileOutputStream(target),1024);
                int temp = -1;
                while((temp=in.read())!=-1){
                   out.write(temp);
                }
    //            while((in.read(b))!=-1){
    //               out.write(b);
    //            }
                out.flush();
                out.close();
                in.close();
               } catch (Exception e) {
                    e.printStackTrace();
               }
         }
     
     
    public class Test3 {
        public static void main(String[] args) {
            //字符流是16位的unicode编码集
            //案例1:得到文本中的数据
            try {
                File file=new File("C:\a\1.txt");
                //创建字节流
                    //字节输入流用于读文本文件
                InputStream is=new FileInputStream(file);     
                //创建字符流
                // 字节输出流向文本文件写输出流
                Reader reader=new  InputStreamReader(is);           
                int temp=-1;
                while((temp=reader.read())!=-1){
                    System.out.print((char)temp);
                }
            } catch (Exception e) {
                // TODO: handle exception
            }
        }
    }
     
     
     
         字符流;
                   Reader
                   Writer
     
    public class Test4 {
        public static void main(String[] args) throws IOException,SQLException {
            //字符流是16位的unicode编码集
            //案例1:得到文本中的数据
                File file=new File("C:\a\1.txt");
                //创建字节流
                OutputStream os=new FileOutputStream(file);
                //创建字符流
                Writer writer=new OutputStreamWriter(os);
                String s="花开花谢花满天,红袖想笑有谁怜!";
                writer.write(s);
                //强制提交
                writer.flush();
                //释放资源
                writer.close();
                os.close();
         }
    }
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    static inline和inline的区别——stm32实测
    实现自动构建编译javaweb项目并发布到N台服务器
    手把手教你用Mysql-Cluster-7.5搭建数据库集群
    HAProxy实现mysql负载均衡
    使用LVS+keepalived实现mysql负载均衡的实践和总结
    阿里巴巴Java开发手册———总结
    阿里巴巴Java开发手册———个人追加的见解和补充(五)
    阿里巴巴Java开发手册———个人追加的见解和补充(四)
    Chapter 3 Phenomenon——24
    阿里巴巴Java开发手册———个人追加的见解和补充(三)
  • 原文地址:https://www.cnblogs.com/nin-w/p/5907462.html
Copyright © 2011-2022 走看看