一、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. 78k的text 文件,输出到textbox 竟然用了20几秒的原因

    开始查资料以为是io读取的,磁盘速度慢的之类的,后来一想,text 又不是几十万条数据,才那么两千行,咋回事. 原来是循环中不停的修改textbox值导致的. 总结:  比较大的运算,特别是大的循环, ...

  2. Oracle_PL/SQL(5) 包

    包1.定义:包用于逻辑组合相关的PL/SQL类型,项和子程序,由包规范和包体组成 建立包规范:包规范是包与应用程序之间的接口,用于定义包的公用组件, 包括常量,变量,游标,过程,函数等 建立包体:用于 ...

  3. 多进程copy文件

    from multiprocessing import Pool,Manager import os,time def copyFileTask(fileName,oldFolderName,newF ...

  4. Java与go哪个更适合后端开发呢?哪个更适合新手呢?

    Java语言目前在后端开发领域有广泛的应用,尤其是大型互联网平台往往选择Java作为主要的后端编程语言.同时,Java自身的生态比较健全,也有大量的成功案例,所以采用Java做后端编程语言是一个风险比 ...

  5. Nginx 如何限定IP访问

    在nginx.conf中的server限制段中.deny IP.表示需要限制该IP不可访问.allow IP表示权该IP可以访问. 如上图.表示阻止192.168.1.122的IP的访问.那当然也可以 ...

  6. 动态加载及Servlet容器加载

    动态加载 动态加载是 Servlet 3.0 中的新特性,它可以实现在不重启 Web 应用的情况下加载新的 Web 对象(Servlet.Filter.Listener). 为了实现动态加载的第一种方 ...

  7. Moving Average from Data Stream LT346

    Given a stream of integers and a window size, calculate the moving average of all integers in the sl ...

  8. 模板 Template

    package ${enclosing_package}; import java.io.IOException;import javax.servlet.ServletException;impor ...

  9. mybatis-mysql类型映射

    JDBC Type Java Type CHAR String VARCHAR String LONGVARCHAR String NUMERIC java.math.BigDecimal DECIM ...

  10. 2019.01.13 bzoj4538: [Hnoi2016]网络(树链剖分)

    传送门 树链剖分一眼题. 题意简述: 给定一棵树,有三种操作: 加入一条路径 删除一条已加入的路径 询问不过一个点x的路径的最大值. 思路: 直接树链剖分维护答案. 因为询问的事不过点xxx的最大值, ...