一、IO概述:

把内存中的数据存入到硬盘(持久化设备)中叫做:输出(写)Output操作。JAVA软件往电脑硬盘上走叫输出。

把硬盘中的数据读取到到内存里叫做:输入(读)Input操作。电脑硬盘上往JAVA软件里走叫输入。

以JAVA软件为参照物。

这种输入输出的动作叫做IO操作。

二、File类(文件类)

2.1定义:File是文件和目录(文件夹)路径名的抽象表现形式,即:JAVA把文件和目录都封装为File对象

2.2构造函数:

       //File构造方法无法判定你写的这个文件是否真的存在
//第一种方法,直接填写路径
File f=new File("e:\\java\\dandan.java");//写路径时写两道杠,用来转译'\' 符号
System.out.println(f);
//第二种方法,将路径跟文件名分开写作字符串,比较灵活
String parent="e:\\java";
String child="dandan.java";
File f2=new File(parent,child);
System.out.println(f2);
//第三种方法,将父类的路径变为文件对象,子类还是字符串 最为灵活
File p=new File("d:\\java");
String c="b.java";
File f3=new File(p,c);
System.out.println(f3);

 2.3File类相关信息的获取方法:

            //绝对路径
File f=new File("e:\\study\\codetool\\jdk\\src.zip");
//获取文件或文件夹的名称
System.out.println(f.getName());
//getPath相当于toString方法得到的值
System.out.println(f.getPath());
//得到文件的字节数(Long类型的值)
System.out.println(f.length());
//获得绝对路径:getAbsolutePath()
//当你写相对路径的时候,会获得工程根路径+相对路径 但是不会判断是否正确
File f=new File("src");
System.out.println(f.getAbsolutePath());

2.4 文件和文件夹的创建删除方法:

                //创建文件   createNewFile()
File f=new File("e:\\java\\xxx.java");
f.createNewFile();
//创建文件夹 mkdir
File f=new File("e:\\java\\aaa\\bbb\\ccc");
//f.mkdir();
//创建多级文件夹 .mkdirs() 尽量用这个方法,比上面只能创建一个的好用
f.mkdirs();
//删除文件夹
File f=new File("e:\\java\\新建文件夹");
//多重路径下的需要先删底层的,一步步删上来
//f.delete();
//注意:delete() 方法删除的文件或文件夹是不走回收站的,直接从硬盘删除
//删除需谨慎,一般不用这个方法,因为找不回来
//.exists() 可以验证路径及文件是否存在,并返回一个true或false
File f=new File("e:\\java\\nishizhuma.txt");
System.out.println(f.exists());
// .isDirectory() 判断文件对象是否是文件夹
System.out.println(f.isDirectory());
//.isFile() 判断文件对象是否是文件
System.out.println(f.isFile());

2.5 listFiles()方法:

用来获取一个目录中所有的文件或文件夹。

        File f=new File("e:\\java");
//获取该路径下的所有文件和文件夹的字符串
String[] filearr=f.list();
for(String s:filearr){
System.out.println(s); //打印的是文件名
}
//将所有文件存入一个数组中
File[] file=f.listFiles();
for(File f1:file){
System.out.println(f1); //打印的是路径+文件名
}

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

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

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

 2.6 文件过滤器:

File类中重载的listFiles方法,并且接受指定的过滤器。

  过滤器的使用:

public static void main(String[] args) {
File f=new File("e:\\java");
getFile(f); }
public static void getFile(File f){
//通过文件过滤器,将返回为true的文件存入数组中
File[] file=f.listFiles(new MyFilter()); //new MyFilter() 文件过滤器
for(File f1:file){
System.out.println(f1);
}
}

自定义一个过滤器类:只打印名称以.java结尾的文件

package com.oracle.Demo01;

import java.io.File;
import java.io.FileFilter; public class MyFileter implements FileFilter { @Override
public boolean accept(File pathname) {
if(pathname.isDirectory()){
return true;
}
//将文件名称全部转小写 因为在windows系统中,文件名称是不区分大小写,但是在java文件中是区分的,所以需要先转换为小写
return pathname.getName().toLowerCase().endsWith(".java");
} }

Java第三阶段学习(一、IO流------File类)的更多相关文章

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

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

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

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

  3. Java第三阶段学习(二、IO流--------递归,字节流Stream)

    一.递归 定义:指方法在方法内调用自己 适用于方法的运算主体不变,但运行的时候,参与运算的方法参数会变化注意:一定要给递归一个出口,否则内存溢出 练习题1:使用递归打印文件夹中所有的文件,包含子目录中 ...

  4. Java第三阶段学习(五、流的操作规律、Properties流、序列化流与反序列化流、打印流、commons-IO jar包)

    一.流的操作规律 四个明确: 明确一:明确要操作的数据是数据源还是数据目的地 源:InputStream   Reader 目的地:OutputStream Writer 先根据需求明确是要读还是写 ...

  5. Java第三阶段学习(四、缓冲流)

    一.缓冲流: Java中提供了一套缓冲流,它的存在,可提高IO流的读写速度 缓冲流,根据流的分类分为:字节缓冲流与字符缓冲流. 二.字节缓冲流: 字节缓冲流根据流的方向,共有2个: 1.写入数据到流中 ...

  6. Java第三阶段学习(八:网络通信协议、UDP与TCP协议)

    一.网络通信协议 1.概念: 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传 ...

  7. Java第三阶段学习(六、多线程)

    一.进程和线程的区别: 进程:指正在运行的程序,当一个程序进入内存运行,就变成一个进程. 线程:线程是进程的一个执行单元. 总结:一个程序运行后至少会有一个进程,一个进程可以有多个线程. 多线程:多线 ...

  8. JAVA:IO流——File类

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

  9. Java学习之IO之File类一

    File的操作 package com.gh.file; import java.io.File; import java.io.IOException; /** * File操作 * @author ...

随机推荐

  1. python基础之模块之sys模块

    sys模块的功能 sys是python中较为常用的一个模块,他提供了对python脚本运行时的环境的操作. sys功能: 1  sys.argv     #将python脚本运行时的脚本名以及参数作为 ...

  2. kubernetes node管理

    目录 Node的扩缩容 删除node节点 Node的隔离与恢复 通过配置文件实现 通过命令行的方式实现 恢复 更新资源对象的label 给一个node添加一个label 将pod调度到指定的node ...

  3. Hadoop生态圈-Sqoop部署以及基本使用方法

    Hadoop生态圈-Sqoop部署以及基本使用方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与 ...

  4. 针对TCP连接异常断开的分析

    我们知道,一个基于TCP/IP的客户端-服务器的程序中,正常情况下,我会是启动服务器使其在一个端口上监听请求,等待客户端的连接:通过TCP的三次握手,客户端能够通过socket建立一个到服务器的连接: ...

  5. jQuery UI dialog 使用记录

    1 属性 1.11 autoOpen ,这个属性为true的时候dialog被调用的时候自动打开dialog窗口.当属性为false的时候,一开始隐藏窗口,知道.dialog("open&q ...

  6. STL-map and multimap

    定义 map<int,int> a; map<int,string> a; map<double,int> a; …… 首先要知道的一些 Map是STL的一个关联容 ...

  7. python概念-Socket到底有多骚

    Socket究竟是什么呢? 简单来说Socket就是用来完成客户端与服务器之间的通信 例如浏览器访问网页,例如网络游戏等一切基于客户端服务器来实现的C/S架构程序 Socket是基于互联网OSI七层协 ...

  8. 20165329 Java实验二:面向对象编程

    实验内容: 面向对象程序设计-1 实验要求: 提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图 实验步骤: 1.按照老师博客的要求新建一个MyUtil项目 在src内新建ja ...

  9. Hibernate5笔记2--单表的增删改查操作

    单表的增删改查操作: (1)定义获取Session和SessionFactory的工具类: package com.tongji.utils; import org.hibernate.Session ...

  10. 【NOI题解】【bzoj题解】NOI2008 bzoj1063 道路设计

    @ACMLCZH学长出的毒瘤题T3.再也不是“善良”的出题人了. 题意:bzoj. 题解: 经典的树形DP题目,屡见不鲜了,然而我还是没有写出来. 这一类的题目有很多,例如这里的C题. 主要套路是把对 ...