Java IO.File

Java中的“流”都位于java.io包中,称为IO(输入/输出)流
IO流有很多种,按照操作数据的不同,可以分为字节流和字符流,按照数据传输方向的不同又可分为输入流和输出流,
程序从输入流中读取数据,向输出流中写入数据。

说一说File:
File:文件或目录(文件夹) 路径名的抽象表示形式

构造方法:
File(File parent, String child): 根据一个父File对象和一个子文件[目录]得到File对象
File(String pathname):根据一个路径得到File对象
File(String parent, String child):根据一个目录和一个子文件[目录]得到File对象

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

//File(String pathname):根据一个路径得到File对象
//这里是讲文件或者目录路径 变为对象, 因为Java中只认识对象,不认"E:\\demo\\a.txt" 这个东西只是字符串,不是真正的文件对象
File f = new File("E:\\demo\\a.txt");//  需要路径格式 E:\\demo  这里的 \\ 等于win系统中的一个\ 或者 /
System.out.println(f);


//File(String parent, String child):根据一个目录和一个子文件[目录]得到File对象 
File f2 = new File("e:/demo", "a.txt");//磁盘名不区分大小写
System.out.println(f2);


//File(File parent, String child): 根据一个父File对象和一个子文件[目录]得到File对象
File f3 = new File("e:/demo.txt/ys");//表示是一个目录
File f4 = new File(f3, "a.txt");
System.out.println(f4);

//以上三个的作用是一模一样的

}
File的功能:

  • 创建功能:

  • public boolean createNewFile():创建文件, 如果存在这样的文件,就不创建

  • public boolean mkdir():创建文件夹,如果存在这样的目录,就不创建

  • public boolean mkdirs():创建文件夹,如果父目录不存在,则帮你创建
    例子:
    public static void main(String[] args) throws IOException {

    File f = new File("E:/demo/b");
    try {
    	System.out.println(f.createNewFile());
    } catch (IOException e) {
    	
    	e.printStackTrace();
    }
    
    File f2 = new File("E:/demo/c.txt");
    System.out.println(f2.mkdir());
    
    File f3 = new File("e:/javaTest/b/e");
    System.out.println(f3.mkdirs());
    //mkdirs():注意:只要有一个目录不存在就返回的是true,都是存在则是false
    
    //需求:在e盘下的javaTest下的demo目录下创建一个hello.txt;
    File f4 = new File("e:/javaTest/demo");
    f4.mkdirs();
    File f5 = new File(f4, "hello.txt");
    f5.createNewFile();
    /*
     *  /: 表示根路径  在windos中就是磁盘路径
     * */
    File f6 = new File("/demo/src");//相对项目目录下创建
    System.out.println(f6);
    f6.mkdirs();
    

    }

  • 删除功能:

  • public boolean delete():

  • 需要注意的是:

  •  A.如果你创建文件或者目录忘了写盘符路径,那么默认下项目目录路径下
    
  •  B.Java中的删除是不走回收站的
    
  •  C.要删除一个目录,请注意该目录内不能包含目录或者文件(这点需要特别注意)
    

例子:
public static void main(String[] args) {

	File f4 = new File("e:/javaTest/demo");
	File f5 = new File(f4, "hello.txt");
	System.out.println(f5.delete());//删除成功
	
	File f3 = new File("e:/javaTest");
	System.out.println(f4.delete());//删除失败,看注意的第三点!
}
  • 重命名功能:
  • public boolean renameTo(File dest)
  •   如果路径名相同,就是改名
    
  •   如果路径名不相同,就是改名并剪切
    

例子:
public static void main(String[] args) {

File f = new File("E:\\javaTest\\demo");
File ff = new File("E:\\javaTest");

File f1 = new File(f,"3.jpg"); 
boolean renameTo = f1.renameTo(new File(ff,"大镁铝.jpg"));
System.out.println(renameTo);

}

  • 判断功能:

  • public boolean isDirectory():判断是否是目录

  • public boolean isFile():判断是否是文件

  • public boolean exists():判断是否存在

  • public boolean canRead():判断是否可读

  • public boolean canWrite():判断是否可写

  • public boolean isHidden():判断是否隐藏
    例子:
    public static void main(String[] args) {

     File f = new File("E:\\javaTest\\demo");
     File f1 = new File(f, "1");
     System.out.println(f1.isDirectory());//false
     System.out.println(f1.isFile());//true
     
     System.out.println(new File("e:\\aa").exists());//false
     System.out.println(f1.exists());//true
     System.out.println(f.exists());//true
     
    
     System.out.println(f1.canRead());//true
     System.out.println(f1.isHidden());
     System.out.println(f1.canWrite());
    

    }

  • 获取功能:

  • public String getAbsolutePath():获取绝对路径

  • public String getPath():获取相对路径

  • public String getName():获取名称

  • public long length():获取长度,字节数

  • public long lastModified():获取最后一次的修改的时间,毫秒数

  • public String[] list():获取指定目录下的所有文件或者目录的名称数组

  • public File[] listFiles():获取指定目录下的所有文件或者目录的File数组
    例子:
    public static void main(String[] args) {
    File f1 = new File(“E:\不要再打了”);
    File f2 = new File(f1,“a.txt”);

     System.out.println(f1.isDirectory());//判断f1是否为目录
     System.out.println(f2.isFile());//判断f2是否为文件
     
     String path = f1.getPath(); //获得相对路径
     System.out.println(path);
     
     String absolutePath = f1.getAbsolutePath();//获得绝对路径
     System.out.println(absolutePath);
     
     long lastModified = f2.lastModified(); //返回的是一个毫秒值
     Date date = new Date(lastModified);
     String format = new SimpleDateFormat("yyyy-MM-d HH-mm-ss").format(date);
     System.out.println(format);
     
     
     String[] list = f1.list();//获取指定目录下的所有文件或者目录的名称数组
     List<String> asList = Arrays.asList(list); //将数组变为集合直接输出
     System.out.println(asList);
     //System.out.println(Arrays.toString(list));//一维数组也可以直接输出,利用Arrays.toString方法
     
     File[] listFiles = f1.listFiles();//获取指定目录下的所有文件或者目录的File数组
     for (File file : listFiles) {
     	System.out.println(file.getName());
     }
    

    }
    *文件过滤器:

  • public String[] list(FilenameFilter filter)

  • public File[] listFiles(FilenameFilter filter)
    练习兼例子:
    判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称

public static void main(String[] args) {

File f = new File("e://a");

File[] listFiles = f.listFiles();

for (File file : listFiles) {
	if(file.isFile()){
		if(file.getName().endsWith(".jpg")){
			System.out.println(file.getName());
		}
	}
}

}
2.
public static void main(String[] args) {

File f = new File("e://a");
String[] arrays = f.list(new FilenameFilter() {
	
	@Override
	public boolean accept(File dir, String name) {
		// TODO Auto-generated method stub
		//System.out.println(dir+","+name);
		//dir 表示就是指定的目录  name:指定目录下的子目录或者文件的名称
		File f1 = new File(dir, name);
		if(f1.isFile()&&name.endsWith(".jpg")){
			return true;
		}
		return false;
		//return new File(dir,name).isFile() && name.endsWith(".jpg");  也可以这样简写
	}
});

for (String string : arrays) {
	System.out.println(string);
}

}

切记的是Java是不认识“e:/a/b”这种路径的,它只认识对象,所以我们要利用对象来操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值