File类与字节流

  1.File类  

  1.1:表达式:File f = new File("文件路径")  

  1.2:需导入的包: java.io.File  1.3:File表示文件或文件夹(目录),不能操作文件类容,只能操作文件的属性  

  1.4:File常用的方法:    

     boolean flag = f.exists(); //文件是否存在           

    flag = f.isFile(); //是否是文件           

    flag = f.isDirextory(); //是否是目录           

    str = f.getPath(); //获得文件的相对路径           

    str = f.getAbsolutePath(); //获取文件的绝对路径      

     str = f.getName(); //获取文件的目录或名称           

     flag = f.delete(); //删除文件或目录           

    flag = f.createNewFile(); //创建文件           

     long = f.length(); // 返回文件长度            注意flag不能操作文件内容

           示例:       

    File file=new File("D:\Test\hello.txt");          

    if(file.exists()){ //判断是否有文件或文件夹存在        

    if(file.isFile()){ //如果是文件        

     System.out.println("名称:"+file.getName());         

    System.out.println("相对路径:"+file.getPath());            

    System.out.println("绝对路径:"+file.getAbsolutePath());         

    System.out.println("文件大小为:"+file.length());         }      

    if(file.isDirectory()){      System.out.println("此文件为目录或文件夹!");    

     }else{       

      System.out.println("文件不存在!");    }    

      }

   1.5:相对路径:非web项目的相对都是以项目为起点。(src/a/txt(建议))             

      绝对路径:f:/bin/a.txt(以盘符开头)

 2.流  

  2.1:流:值一连串流动的字符,(字符:本质是一种电波"0、1")  2

  .2:分类:   输入流:只能从文件中读取数据到JAVA中来,不能在java中写数据文件到文件中。  

         输出流:只能在java中写数据文件到文件中 

 2.字节流  

  2.1:字节输入流(InputStream):   

  2.1.1: 常用方法(数据从文件到java代码中)          

     int read(); //读取一个字节          

     int read(byte[]); //读取一串字节           

    long avaliable; //文件长度

   2.1.2:   FileInptstream(字节文件输入流,是InputStream的子类)           

    new FileInptstream(File)           

     new FileInptstream("文件路径+文件名")

2.1.3:示例:

       //声明流对象  

     FileInputStream fis=null;   

    try {    fis =new FileInputStream("D:\Test\hello.txt");   

     int data;    System.out.println("文件内容为:");        //循环读取数据        

    while((data=fis.read())!=-1){     

       System.out.print((char)data+"");  

       }  

         }catch (FileNotFoundException e) {  

      // TODO Auto-generated catch block    

        e.printStackTrace();  

     }      catch (IOException e) {   

       // TODO Auto-generated catch block   

           e.printStackTrace();   

       } finally {   

        if(fis!=null){   

         try {    

             fis.close();   

           } catch (IOException e) {  

             // TODO Auto-generated catch block     

            e.printStackTrace();    }

        }

         }

  2.2:字节输出流(OutPutStream):   

    2.2.1: 常用方法:(数据从java代码中,写到文件或其他介质中)          

         void write (字节);//写入一个字节         

         void write(byte[]); //写入字节数组

    2.2.2: FileOutputStream(字节文件输出流,是OutputStream的子类)          

        new FileOutputStream(file)        

         new FileOutputStream("文件路径+文件名")        

         new FileOutputStream("文件路径+文件名",boolean) 

 注意:a.boolean:表示是否向文件末尾追加,如果是true,表示追加,false表示不追加(也就是覆盖),默认值为false

         b.创建FileOutputStream实咧时,如果相应的文件并不存在,则会自动创建一个空的文件。

 

补充:(递归算法)

  //  File file=new File("D:\Test");

  //  showInfo(file);   

   //非菠萝契数列:1 1 2 3 5 8 ......   

  //int [] muns=new int[10]; //定义数组   

  Scanner input=new Scanner(System.in);

    System.out.println("请输入您要计算的位置:");  

   int a=input.nextInt();  

   System.out.println(suan(a-1));

 }  

 private static void showInfo(File f){  

     File [] file=f.listFiles();   

    for(int i=0;i<file.length;i++){   

       System.out.println(file[i].getName()); //得到一级目录中的文件和文件夹   

       if(file[i].isDirectory()){ //判断一级目录中是否含有文件夹    

         showInfo(file[i]);//调用自己方法    }

        }  

    }  

     private static  int suan(int i){  

       if(i==0 || i==1){   

         return i=1;   }else{

          return suan(i-2)+suan(i-1);  

     }

原文地址:https://www.cnblogs.com/22joke/p/6827844.html