File类

File:文件和目录路径名的抽象表示形式。即java中把文件或者目录都封装成File对象

代码练习1

import java.io.File;

public class FileDemo1{
public static void main(String[] args){
//将路径封装成一个file对象
File file = new File("/home/hadoop/javatest/wujiadong1.txt");
System.out.println(file);
}
}
---------------------------------------
输出结果
/home/hadoop/javatest/wujiadong1.txt
---------------------------------------

File类构造方法

代码练习2

import java.io.File;

public class FileDemo1{
public static void main(String[] args){
//方式1
File file1 = new File("/home/hadoop/javatest/wujiadong1.txt");
//方式2
File file2 = new File("/home/hadoop/javatest","wujiadong1.txt");
//方式3
File file3 = new File("/home/hadoop/javatest");
File file4 = new File(file3,"wujiadong1.txt"); System.out.println(file1);
System.out.println(file2);
System.out.println(file3);
System.out.println(file4);
}
}
-----------------------------------------------
输出结果
/home/hadoop/javatest/wujiadong1.txt
/home/hadoop/javatest/wujiadong1.txt
/home/hadoop/javatest
/home/hadoop/javatest/wujiadong1.txt
-----------------------------------------------------

创建功能

代码练习3

import java.io.File;
import java.io.IOException; public class FileDemo{
public static void main(String[] args) throws IOException {
//根据一个路径得到File对象
File file = new File("/home/hadoop/a.txt");
File file2 =new File("/home/hadoop","b.txt");
File file3 = new File("/home/hadoop");
File file4 = new File(file3,"c.txt"); File file5 = new File("/home/hadoop/aaa");
File file6 = new File("/home/hadoop/bbb/ccc/ddd"); //创建文件
System.out.println(file.createNewFile());
System.out.println(file2.createNewFile());
System.out.println(file4.createNewFile()); System.out.println(file5.mkdir());//创建一级目录
System.out.println(file6.mkdirs());//创建多级目录
}
}

删除功能

代码练习4

import java.io.File;
import java.io.IOException; public class FileDemo{
public static void main(String[] args) throws IOException {
//根据一个路径得到File对象
File file = new File("/home/hadoop/a.txt"); file.delete();//注意只能删除文件或单级目录
}
}

重命名功能

代码练习5

import java.io.File;
import java.io.IOException; public class FileDemo{
public static void main(String[] args) throws IOException {
//根据一个路径得到File对象
File file = new File("/home/hadoop/a.txt");
file.createNewFile(); File file1 = new File("/home/hadoop/wujiadong.txt");
file.renameTo(file1);
}
}

判断功能

代码练习6

import java.io.File;
import java.io.IOException; public class FileDemo{
public static void main(String[] args) throws IOException {
//根据一个路径得到File对象
File file = new File("/home/hadoop/a.txt");
file.createNewFile(); File file1 = new File("/home/hadoop/wujiadong.txt");
file.renameTo(file1); System.out.println("isDirectory:"+file1.isDirectory());
System.out.println("isFile:"+file1.isFile());
System.out.println("exists:"+file1.exists());
System.out.println("canRead:"+file1.canRead());
System.out.println("canWrite:"+file1.canWrite());
System.out.println("isHidden:"+file1.isHidden());
}
}
-----------------------------------
输出结果
isDirectory:false
isFile:true
exists:true
canRead:true
canWrite:true
isHidden:false
----------------------------------

获取功能

代码练习7

import java.io.File;
import java.io.IOException; public class FileDemo{
public static void main(String[] args) throws IOException {
//根据一个路径得到File对象
File file = new File("/home/hadoop/a.txt");
file.createNewFile(); System.out.println("getAbsolutePath:"+file.getAbsolutePath());//绝对路径
System.out.println("getPath:"+file.getPath());//相对路径
System.out.println("getName:"+file.getName());//名称
System.out.println("length:"+file.length());//大小
System.out.println("lastModified:"+file.lastModified());//获取最后一次修改时间,毫秒值
}
}
-------------------------------
输出结果
getAbsolutePath:/home/hadoop/a.txt
getPath:/home/hadoop/a.txt
getName:a.txt
length:0
lastModified:1480772014000
---------------------------------

高级获取功能(重点)

代码练习8

import java.io.File;

public class FileDemo{
public static void main(String[] args){
//指定一个目录
File file = new File("/home/hadoop/javatest"); //public String[] list():获取指定目录下的所有文件夹的名称数组
String[] strArray = file.list();//只列出文件名称 for(String s:strArray){
System.out.println(s);
} System.out.println("---------"); //public File[] listFiles():获取指定目录下的所有文件夹的File数组
File[] fileArray = file.listFiles();//文件详细路径和名称
for(File f:fileArray){
System.out.println(f.getName());
}
}
}

练习:判断目录/home/hadoop下是否有后缀名为.txt的文件,如果有,就输出此文件名称

代码练习9

/*
* 判断目录/home/hadoop下是否有后缀名为.txt的文件,如果有,就输出此文件名称
* 封装目录;遍历文件或目录;判断获取到的是否是文件;是否以.txt结尾 */ import java.io.File; public class FileDemo1{
public static void main(String[] args){
File file = new File("/home/hadoop"); //获取该目录下所有文件或者文件夹的File数组
File[] fileArray = file.listFiles(); for(File f:fileArray){
//判断是否是文件
if(f.isFile()){
//判断是否以.txt结尾
if(f.getName().endsWith(".txt")){
System.out.println(f.getName());
}
}
}
}
} -------------------------------------------------
输出结果
c.txt
b.txt
a.txt
wujiadong.txt
-----------------------------------------------

代码练习10

方法二(使用过滤器)

import java.io.File;
import java.io.FilenameFilter; public class FileDemo1{
public static void main(String[] args){
File file = new File("/home/hadoop"); File[] fileArr = file.listFiles(new MyFileFilter());//传递过滤器
for(File f:fileArr){
System.out.println(f);
}
}
} //自定义类继承FilenameFilter过滤器接口
class MyFileFilter implements FilenameFilter{
public boolean accept(File dir,String name){
return name.endsWith(".txt");
}
}

练习:获取/home/hadoop下的所有文件夹(过滤器)

import java.io.File;
import java.io.FileFilter; public class FileDemo1{
public static void main(String[] args){
File file = new File("/home/hadoop"); File[] fileArr = file.listFiles(new FileFilterByDir());//获取指定目录下的文件夹
for(File f:fileArr){
System.out.println(f);
}
}
} class FileFilterByDir implements FileFilter{
public boolean accept(File pathname){
return pathname.isDirectory();
}
}

FilenameFilter与FileFilter的比较

  • FilenameFilter过滤器中的accept方法接受两个参数,一个是当前文件夹或文件夹所在路径,一个是当期文件或文件夹对象的名称
  • FileFilter过滤器中的accept方法接受一个参数,这个参数是当期文件或文件夹对象
  • 当需过滤文件名称时使用FilenameFilter;当需对当前文件或文件夹进行过滤,就可以使用FileFilter

练习:批量修改文件名



练习:递归输出指定目录下所有以.java格式结尾的文件

代码练习10

import java.io.File;
public class FilePathDemo{
public static void main(String[] args){
//封装目录
File srcFolder = new File("/home/hadoop/javatest");
getAllFilePath(srcFolder);
}
//递归功能
private static void getAllFilePath(File srcFolder){
File[] fileArray = srcFolder.listFiles(); //遍历
for(File file:fileArray){
if(file.isDirectory()){
getAllFilePath(file);
}else{
if(file.getName().endsWith(".java")){
System.out.println(file.getAbsolutePath());
}
}
}
} }

练习:递归删除带内容的目录

代码练习11

import java.io.File;

public class FileDeleteDemo1{
public static void main(String[] args){
//封装目录
File srcFolder = new File("/home/hadoop/javatest/test"); deleteFolder(srcFolder);
} private static void deleteFolder(File srcFolder){
//获取所有文件或目录
File[] fileArray = srcFolder.listFiles(); //遍历
for(File file:fileArray){
if(file.isDirectory()){
deleteFolder(file);
}else{
System.out.println("file.getName():"+file.delete());
}
} System.out.println("srcFolder.getName()"+srcFolder.delete());
} } -------------------------------
这里需要注意的是fileArray不能等于null。
可以加入判断if(fileArray != null){}

递归:指在当前方法内调用自己的这种现象

public void show(){
show(); }

注意事项

  • 递归一定要有限制条件
  • 递归次数不能太多
  • 构造方法不能递归使用

java基础9(IO流)-File类的更多相关文章

  1. java基础之IO流(二)之字符流

    java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...

  2. Java基础之IO流整理

    Java基础之IO流 Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接) 抽 ...

  3. java基础之IO流(一)字节流

    java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典 ...

  4. 【Java基础】IO 流

    IO 流 File 类 java.io.File 类是文件和文件目录路径的抽象表示形式,与平台无关. File 能新建.删除.重命名文件和目录,但 File 不能访问文件内容本身. 如果需要访问文件内 ...

  5. Java—IO流 File类的常用API

    File类 1.只用于表示文件(目录)的信息(名称.大小等),不能用于文件内容的访问. package cn.test; import java.io.File; import java.io.IOE ...

  6. 09、IO流—File类与IO流

    目录 一.File类 基本认识 实用方法 获取功能 重命名功能(包含剪切) 判断功能 创建.删除文件 实际小案例 二.IO流 1.认识IO流 2.IO流基类介绍 字节流基类介绍 字符流基类介绍 三.节 ...

  7. java基础之io流总结二:File类基本应用

    File类的概述: File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹. File类保存文件或目录的各种元数据信息,包括文件名.文件长度.最后修改时间.是否可读 ...

  8. JAVA:IO流——File类

    1.掌握File 类的作用 2.可以使用File 类中的方法对文件进行操作 所有的 io 操作都保存在 java.io 包中. 构造方法:public File (String pathname) 直 ...

  9. Java IO流-File类

    2017-10-24 23:50:22 File类 File类:文件和目录路径名的抽象表示形式.该文件或者目录不一定真实存在. * 构造方法 File类有四种构造方法,主要采用的构造方法师第二种,也就 ...

  10. Java第三阶段学习(一、IO流------File类)

    一.IO概述: 把内存中的数据存入到硬盘(持久化设备)中叫做:输出(写)Output操作.JAVA软件往电脑硬盘上走叫输出. 把硬盘中的数据读取到到内存里叫做:输入(读)Input操作.电脑硬盘上往J ...

随机推荐

  1. GIT快速学习

    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001373962845513ae ...

  2. #1589 : 回文子串的数量(Manacher)

    #1589 : 回文子串的数量 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个字符串S,请统计S的所有|S| * (|S| + 1) / 2个子串中(首尾位置不 ...

  3. 让vs只启动自己想调试的站点

    VS中里面多个WEB项目如何只启动一个? 每次启动时,右下角都会出现一堆的 网站有10来个.即使设置了默认启动项目, 但每次按F5启动,或者哪怕是在项目上右键启动新实例 右下角都会出现这一堆的站点 有 ...

  4. MySQL中B+树索引的使用

    1)         不同应用中B+树索引的使用 对于OLTP应用,由于数据量获取可能是其中一小部分,建立B+树索引是有异议时的 对OLAP应用,情况比较复杂,因为索引的添加应该是宏观的而不是微观的. ...

  5. python cookbook第三版学习笔记二十一:利用装饰器强制函数上的类型检查

    在演示实际代码前,先说明我们的目标:能对函数参数类型进行断言,类似下面这样: @typeassert(int, int) ... def add(x, y): ...     return x + y ...

  6. kettle连接sqlserver

    1.Sql Server的 数据库链接 Sql server链接有两类,MS SQL SERVER 和 MS SQL SERVER(NATIVE),这两个有什么区别呢,且看下面. 第一类,MS SQL ...

  7. 《Mining of Massive Datasets》笔记(一)

    数据挖掘基本概念 数据挖掘定义 最广为接受得到定义是,数据挖掘是数据"模型"的发现过程.而"模型"却可以有多种含义. 1)统计建模 统计学家认为数据挖掘就是统计 ...

  8. ACM解题之(ZOJ 2724)Windows Message Queue

    题目来源: 点击打开链接 题目翻译: 消息队列是windows系统的基本基础.对于每个进程,系统都维护一个消息队列.如果这个过程发生某些事情,例如鼠标点击,文本改变,系统会向队列添加一条消息.同时,如 ...

  9. 做测试时,启动SpringBoot出现警告,在ClassPath中一个类多次出现

    Found multiple occurrences of org.json.JSONObject on the class path: jar:file:/C:/Users/niaomingjian ...

  10. python并发编程之多线程2---(死锁与递归锁,信号量等)

    一.死锁现象与递归锁 进程也是有死锁的 所谓死锁: 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用, 它们都将无法推进下去.此时称系统处于死锁状态或系统 ...