一、File

Io概述:

当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作。

当把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作。

因此我们把这种输入和输出动作称为IO操作

File类的构造函数:

文件及文件夹的一系列操作方法:

listFiles()方法9-10

代码实现:

package com.oracle.io;

import java.io.File;
import java.io.IOException; //File 类包含
//1.路径 path e:\\java_code\\day22e\\hello.java
//2.目录 directory 文件夹
//3.文件 file
public class Demo01 {
public static void main(String[] args) throws IOException {
/*method2();
method3();
method4();
method5();
method6();
method7();
method8();
method9();*/
method10();
}
public static void method1(){
//与系统有关的路径分隔符win ; Linux :
System.out.println(File.pathSeparator);
//与系统有关的名称分隔符win \ Linux /
System.out.println(File.separator);
}
public static void method2(){
//File类构造方法不会给你检验这个文件或者文件夹是否真实存在
//File file=new File("X:\\test\\a.txt");
//File file=new File("X:","test");
File f1=new File("X:\\test");
File file=new File(f1,"a.txt");
System.out.println(file);
}
public static void method3(){
//File file=new File("X:\\test\\a.txt");
File file=new File("src");
//相对路径走的是本工程路径
System.out.println(file.getAbsolutePath()); }
public static void method4(){
//获取本路径目录名或者文件名
File file=new File("X:\\test\\a.txt");
System.out.println(file.getName());
//getPath()和toString()一个作用
System.out.println(file.getPath());
//返回文件的长度long(字节数)
System.out.println(file.length());
}
public static void method5() throws IOException{
//创建文件(只能创建文件不能创建文件夹)
File file=new File("X:\\test\\b.txt");
boolean flag=file.createNewFile();
System.out.println(flag);
}
public static void method6(){
//创建文件夹(不能创建文件)
File file=new File("X:\\test\\e\\f");
//boolean flag=file.mkdir();//单级目录
boolean flag=file.mkdirs();//多级目录
System.out.println(flag);
}
public static void method7(){
//删除文件或文件夹
//直接从硬盘上删除,不走回收站
//删除需谨慎
File file=new File("X:\\test\\b.txt");
boolean flag=file.delete();
System.out.println(flag);
}
public static void method8(){
File file=new File("X:\\test\\a.txt");
//判断file对象表示的文件或文件夹是否真实存在
//boolean flag=file.exists();
//判断是否是文件夹
//boolean flag=file.isDirectory();
//是否是文件
boolean flag=file.isFile();
System.out.println(flag);
}
public static void method9(){
File file=new File("X:\\test");
//获取此路径下所有的文件或文件夹的字符串名称
String[] files=file.list();
for(String s:files){
File f1=new File(file,s);
if(f1.getName().equals("a.txt")){
f1.delete();
}
}
}
public static void method10(){
File file=new File("X:\\test");
File[] files=file.listFiles();
for(File f:files){
System.out.println(f);
}
}
}

注意:在获取指定目录下的文件或者文件夹时必须满足下面两个条件

1,指定的目录必须是存在的,

2,指定的必须是目录。否则容易引发返回数组为null,出现NullPointerException

文件过滤器:

package com.oracle.io;

import java.io.File;
import java.io.FileFilter; public class MyFilter implements FileFilter{ public boolean accept(File pathname) {
/* String name=pathname.getName().toLowerCase();
boolean flag=name.endsWith(".java");*/
return pathname.getName().toLowerCase().endsWith(".java");
} } import java.io.File; public class Demo02 {
public static void main(String[] args) {
File file=new File("x:\\test");
File[] files=file.listFiles(new MyFilter());
for(File f:files){
System.out.println(f);
}
}
}

图解:

有参:

当listFile获取路径时,会调用accept方法,然后把路径传过去,运行accept方法,如果返回true,则存进

File数组中,反之;如果返回false,就不存;最后遍历输出结果。

无参:

import java.io.File;

//获取某目录下所有的文件
public class Demo03 { public static void main(String[] args) {
File file=new File("x:\\test");
getAllFile(file); }
public static void getAllFile(File file){
//获取该目录下的文件及文件夹
File[] files=file.listFiles();
//遍历
for(File f:files){
if(f.isDirectory()){
getAllFile(f);
}else{
System.out.println(f);
}
}
}
}

文解:

创建一个File数组,调用无参方法;进行遍历,先进行判断,如果f是文件夹的话,则遍历到它的子目录,

讲子目录下的文件存入数组,反之打印遍历到的所有文件。

递归

递归分为两种,直接递归和间接递归。

直接递归称为方法自身调用自己。

举例:

public class Demo04 {
//递归:要运行的方法主体不变,而参与运行的方法参数会变
//递归必须要写一个程序出口,否则该程序没有意义
public static void main(String[] args) {
getNum(3);
}
//计算1-100的和,用递归做
public static int getNum(int n){
if(n==1){
return 1;
}
return n+getNum(n-1);
} }

递归打印所有子目录中的文件路径

public class YourFilter implements FileFilter{

    public boolean accept(File pathname) {
//如果是文件夹,则不进行过滤,认为满足条件加到File数组中
if(pathname.isDirectory()){ 判断是否是文件夹
return true;  是则不过滤并存入数组
}else{
return pathname.getName().toLowerCase().endsWith(".java"); 反之打印带有.java后缀的文件
}
} }
public class Demo05 {

    public static void main(String[] args) {
File file=new File("x:\\test");
getAllFile(file); }
public static void getAllFile(File file){
File[] files=file.listFiles(new YourFilter());
for(File f:files){
if(f.isDirectory()){ 判断是否是文件夹
getAllFile(f);  显示子目录存入数组
}else{
System.out.println(f); 反之打印文件
}
}
} }

搜索指定目录中的.java文件(含子目录)

public class FileDemo4 {
public static void main(String[] args) {
File file = new File("d:\\test");
getFileAll(file);
}
//获取指定目录以及子目录中的所有的文件
public static void getFileAll(File file) {
File[] files = file.listFiles(MyFileFilter());
//遍历当前目录下的所有文件和文件夹
for (File f : files) {
//判断当前遍历到的是否为目录
if(f.isDirectory()){
//是目录,继续获取这个目录下的所有文件和文件夹
getFileAll(f);
}else{
//不是目录,说明当前f就是文件,那么就打印出来
System.out.println(f);
}
}
}
} //定义类实现文件名称FilenameFilter过滤器
class MyFileFilter implements FilenameFilter{
public boolean accept(File dir, String name) {
return name.endsWith(".java");
}
}

File类、文件过滤器、递归、文件及文件夹的操作方法的更多相关文章

  1. java基础 File与递归练习 使用文件过滤器筛选将指定文件夹下的小于200K的小文件获取并打印按层次打印(包括所有子文件夹的文件) 多层文件夹情况统计文件和文件夹的数量 统计已知类型的数量 未知类型的数量

    package com.swift.kuozhan; import java.io.File; import java.io.FileFilter; /*使用文件过滤器筛选将指定文件夹下的小于200K ...

  2. Python之文件处理-递归删除特定文件

    Python之文件处理-递归删除特定文件 #!/usr/bin/env python # -*- coding:utf-8 -*- import os def delete_particular_fi ...

  3. Java File类应用:递归遍历文件夹和递归删除文件

    要求: 1)采用递归遍历文件夹下的所有文件,包括子文件夹下的文件 2)采用递归删除文件下的所有文件 注意: 以下递归删除文件的方法,只能删除文件,所有的文件夹都还会存在 若要删除正文文件夹,可以在递归 ...

  4. File类的特点?如何创建File类对象?Java中如何操作文件内容,什么是Io流Io流如何读取和写入文件?字节缓冲流使用原则?

    重难点提示 学习目标 1.能够了解File类的特点(存在的意义,构造方法,常见方法) 2.能够了解什么是IO流以及分类(IO流的概述以及分类) 3.能够掌握字节输出流的使用(继承体系结构介绍以及常见的 ...

  5. 【HDFS API编程】查看目标文件夹下的所有文件、递归查看目标文件夹下的所有文件

    使用hadoop命令:hadoop fs -ls /hdfsapi/test  我们能够查看HDFS文件系统/hdfsapi/test目录下的所有文件信息 那么使用代码怎么写呢?直接先上代码:(这之后 ...

  6. java基础知识回顾之javaIO类--File类应用:过滤器接口FilenameFilter和FileFilter

    FilenameFilter和FileFilter都是用来过滤文件,例如过滤,以.jpg或者.java结尾的文件,通过看他们的源码:通过使用File类中String[] list(FilenameFi ...

  7. 类unix系统 递归删除指定文件

    递归删除当前目录下所有以 ._开头的文件 find . -name "._*" | xargs rm -f 或者: find . -name "._*" -ex ...

  8. 使用File类列出指定位置下的文件及目录信息

    public static void main(String [] args) { File f=new File("C:"); File [] fl=f.listFiles(); ...

  9. Java 合并多个文件内容到一个文件(递归遍历某个文件夹下所有文件)

    这段代码通过Java I/O流API实现将多个文件合并到一个文件中,输出为文本文件,提供一个支持语法高亮的网站,http://www.codeinword.com/ 适合粘贴代码到word文档,小巧实 ...

  10. 利用File类过滤器列出目录下的指定目录或文件

    需求:列出d盘下的全部txt文件 实现方法:利用File类的过滤器功能 package com.test.common.util; import java.io.File; import java.i ...

随机推荐

  1. An enumerable sequence of parameters (arrays, lists, etc) is not allo

    环境:dapper asp.net core 出错代码如下: public Task<IEnumerable<dynamic>> GetList(string query, p ...

  2. jQuery 作业三个按钮

    作业三个按钮 <!--声明 文档--> <!DOCTYPE html> <!--定义字符集--> <html lang="zh-CN"&g ...

  3. u-boot之怎么实现分区

    启动参数bootcmd=nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0中kernel在哪定义,为什么可以直接引用?针对这个问题展开思考最终定位到 ...

  4. mybatis入门--初识mybatis

    初识mybatis 今天,一起来说说mybits这个框架吧.这是一个持久层的框架.之前叫做ibatis.所以,在它的代码中出现ibatis这个词的时候,不要感到惊讶.不是写错了,它确实就是这个样子的. ...

  5. ES6 Generator的应用场景

    一.基础知识 API文档 ES6 诞生以前,异步编程的方法,大概有下面四种. 回调函数 事件监听 发布/订阅 Promise 对象 Generator 函数将 JavaScript 异步编程带入了一个 ...

  6. c++ 备忘

    一.类型转换#include <sstream>stringstream ss;ss<<reverse(s1)<<'\t'<<reverse(s2);s ...

  7. (转)wcf项目程序调试

    由于使用分布式开发,因此在调试时,要分为客户端调试和服务端调试两种情况,下面就对这两种情况的调试步骤分别加以详细说明  调试客户端的页面代码 当仅仅需要调试客户端代码时,按照以下步骤进行操作: 1. ...

  8. hdu 1983(BFS+DFS) 怪盗Kid

    http://acm.hdu.edu.cn/showproblem.php?pid=1983 首先,题目要求出口和入口不能封闭,那么,只要把出口或入口的周围全给封闭了那盗贼肯定无法成功偷盗,出口或入口 ...

  9. LibreOJ #6007. 「网络流 24 题」方格取数 最小割 最大点权独立集 最大流

    #6007. 「网络流 24 题」方格取数 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 ...

  10. Codeforces 782C. Andryusha and Colored Balloons 搜索

    C. Andryusha and Colored Balloons time limit per test:2 seconds memory limit per test:256 megabytes ...