Java中IO流的File类

File类的常用方法

file类的构造方法

package com.cloud.ioflow;

import java.io.File;

/*

 IO流:Input,Output

 IO主要解决设备与设备之间的数据传输问题

  比如:硬盘-->内存,内存数据-->硬盘,键盘数据-->内存


 IO技术的使用场景

 导出报表,上传大头照,下载,解释xml文件


 数据保存在硬盘上,该数据可以做到永久保存,数据一般以文件的形式保存在硬盘上


 File类的构造方法

   File(String pathname) 指定文件或者文件夹的路径创建一个File文件

   File(File parent,String child) 根据parent抽象路径名和child路径名字符创建一个新的File实例

  

 目录分隔符:  windows机器上的目录分隔符是 \  ,linux机器上的目录分隔符是/

注意:  windows上面\ / 都可以使用作为目录分隔符。而且,如果写/ 的时候只需要写一个即可。

 */

public class Demo1 {

   public static void main(String[] args) {

      File file = new File("F:/a.txt");

      // File parentFile = new File("F:\\");

      // File file = new File("F:\\","a.txt");

      System.out.println("是否存在该目录?"+file.exists());

      System.out.println("目录分隔符:"+File.separator);

   }

}

路径问题

import java.io.File;

 

/*

 路径问题:


绝对路径:该文件在硬盘上的完整路径。绝对路径一般都是以盘符开头的。

相对路径相对路径就是资源文件相对于当前程序所在的路径。

 

 . 当前路径

 .. 上一级路径

 

注意:如果程序当前所在的路径与资源文件不是在同一个盘下面,是没法写相对路径

*/

public class Demo2 {

   public static void main(String[] args) {

      File file = new File(".");

      System.out.println("当前路径:"+file.getAbsolutePath());

      File file2=new File("\\..\\..\\a.txt");

      System.out.println("存在该文件?"+file2.exists());

   }

}

 

创建文件

import java.io.File;

import java.io.IOException;

/*

文件的创建

createNewFile()  在指定位置创建一个空文件,成功就返回true,如果已存在就不创建然后返回false

   mkdir()       在指定位置创建目录,这只会创建最后一级目录,如果上级目录不存在就抛异常。

   mkdirs()   在指定位置创建目录,这会创建路径中所有不存在的目录。

   renameTo(File dest) 重命名文件或文件夹,也可以操作非空的文件夹,文件不同时相当于文件的剪切,

                 剪切时候不能操作非空的文件夹。移动/重命名成功则返回true,失败则返回false

*/

public class Demo3 {

   public static void main(String[] args) throws IOException {

      File file = new File("F:\\aa");

      //createNewFile 创建一个指定的文件,如果该文件存在了,则不会再创建,

      //如果还没有存在则创建。创建成功返回true,否则返回false

      System.out.println("是否创建成功?"+file.createNewFile());

     

      File dir = new File("F:\\a.txt");

      // mkdir 创建一个单级文件夹,

      System.out.println("是否创建?"+dir.mkdir());

     

      File dirs = new File("F:\\A\\B");

      System.out.println("创建多级文件夹"+dirs.mkdirs());

     

      File destFile = new File("F:\\aaaa");

      System.out.println("重命名成功?"+file.renameTo(destFile));

   }

}

删除文件

package com.cloud.ioflow;

import java.io.File;

/*

删除文件:

delete() 删除文件或者一个空的文件夹,如果文件夹且不为空,则不能删除,成功返回true,失败返回false

deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或者目录,保证程序异常时创建的临时文件可以被删除

 

   判断:

   exists() 文件或文件夹是否存在

   isFile() 是否是一个文件,如果不存在,则始终为false

   isDirectory()   是否是一个目录,如果不存在,则始终是false

   isHidden()  是否是一个隐藏的文件,或是否是隐藏的目录

   isAbsolute()  测试抽象路径名是否是为绝对路径名

 */

public class Demo4 {

   public static void main(String[] args) {

      File file = new File("F:\\a.txt");

      System.out.println("是否删除成功?"+file.delete());

      file.deleteOnExit();//一般用于java虚拟机结束的时候删除临时产生的文件

      File file2 = new File("..\\..\\a.txt");

      System.out.println("file2存在吗?"+file2.exists());

      System.out.println("是否是一个文件?"+file2.isFile());

      System.out.println("是文件夹?"+file2.isDirectory());

      System.out.println("是隐藏文件?"+file2.isHidden());

      System.out.println("是绝对路径?"+file2.isAbsolute());

   }

}

返回结果:

是否删除成功?false

file2存在吗?false

是否是一个文件?false

是文件夹?false

是隐藏文件?false

是绝对路径?false

获取文件信息

package com.cloud.ioflow;

import java.io.File;

import java.text.SimpleDateFormat;

import java.util.Date;

/*

获取:

   getName()  获取文件或文件夹名称,不包含上级路径

   getPath()  返回绝对路径,可以是相对路径,但是目录要指定

   getAbsolutePath()  获取文件的绝对路径,与文件是否存在没关系

   length()  获取文件的大小(字节数),如果文件不存在则返回OL,如果是文件夹也返回OL

   getParent()  返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null

   lastModified()  获取最后一次被修改的时间

 */

public class Demo5 {

   public static void main(String[] args) {

      File file = new File("..\\..\\a.txt");

      System.out.println("--"+file.getName());

      System.out.println("--"+file.getPath());

      System.out.println(file.getAbsolutePath());

      System.out.println(file.length());

      System.out.println(file.getParent());

      long lastModified = file.lastModified();

      Date date = new Date(lastModified);

      SimpleDateFormat dateformat = new SimpleDateFormat("yyyyMMdd  HH:mm:ss");

      System.out.println(dateformat.format(date));

   }

}

文件夹操作

package com.cloud.ioflow;

import java.io.File;

/*

文件夹相关:

   static File[] listRoots() 列出所有的根目录(Window中就是所有系统的盘符)

   list() 返回目录下的文件或者目录名,包含隐藏文件。对于文件这样操作会返回null

   listFiles() 返回目录下的文件或者目录对象(File类实例),包含隐藏文件。对于文件这样操作会返回null

   list(FilenameFilter filter) 返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null

   listFiles(FilenameFilter filter) 返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null

 */

public class Demo6 {

   public static void main(String[] args) {

      File [] roots = File.listRoots();

      /*

       * C:\ D:\ E:\ F:\ G:\

       */

      for(File file:roots){

        System.out.println(file);

      }

      File file = new File("F:\\whmjar");

      String [] fileNames = file.list();

      for(String fileName:fileNames){

        System.out.println(fileName);

      }

      System.out.println(">>>>>>>>>>>>>>>>>>");

      File [] file2 = file.listFiles();

      for(File fileItem:file2){

        System.out.println(fileItem.getName());

      }

   }

}

文件过滤

package com.cloud.ioflow;

 

import java.io.File;

import java.io.FilenameFilter;

 

/*

需求1   指定一个文件夹,然后该文件夹下面所有java文件。

需求2指定一个文件夹,然后列出文件夹下面的所有子文件与文件夹,但是格式要如下:

 

文件:

   文件名1

   文件名2

   文件名3

   ..

 

文件夹:

   文件夹名1

   文件夹名2

   文件夹名3

   ....


listFiles(FilenameFilter filter)  返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null

list(fileNameFilter filter) 返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null

 */

//自定义一个文件名过滤器

class MyFilter implements FilenameFilter{

   @Override

   public boolean accept(File dir, String name) {

      return name.endsWith(".java");

   }

  

}

public class Demo7 {

   public static void main(String[] args) {

      File file = new File("F:\\安卓文件\\MyView1\\src\\com\\cloud\\ioflow");

      listJava2(file);

      listFile(file);

   }

   public static void listJava2(File dir){

      File [] files = dir.listFiles(new MyFilter());

      for(File file:files){

        System.out.println(file.getName());

      }

   }

   //列出所有java文件

   public static void listJava(File dir){

      File [] files = dir.listFiles();

      for(File file:files){

        String fileName = file.getName();

         if(fileName.matches(".+\\.java")&&file.isFile()){

           System.out.println(fileName);

        }

      }

   }

   public static void listFile(File dir){

      File [] files = dir.listFiles();

      System.out.println("文件:");

      for(File fileItem:files){

        if(fileItem.isFile()){

           System.out.println("\t"+fileItem.getName());

        }

      }

      System.out.println("文件夹:");

      for(File fileItem:files){

        if(fileItem.isDirectory()){

           System.out.println("\t"+fileItem.getName());

        }

      }

   }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值