IO流--字符流与字节流--File类常用功能
IO流的常用方法:
1: 文件的读取和写入图解:
2:字节流:
读写文件的方法:
一般效率读取:
读取文件: FileInputStream();
写数据: FileOutputStream ();
缓冲区高效率读取:
读取文件: BufferedInputStream();
写数据: BufferedOutputStram ();
字符流:
读取数据:FileReader();
写数据 : FileWriter();
缓冲区高效读取:
读取数据:BufferedReader();
读取行 :readLine();
写入数据:BufferedWriter();
使用:操作文本文档一般使用字符流,操作其他文件一般使用字节流;
3: File类操作文件的常用方法:
3-1: 文件夹或文件的创建:
//获取File对象
File file = new File("E:\\file");
//创建单个文件夹
boolean mkdir = file.mkdir();
System.out.println(mkdir);
//创建多层级的文件夹的:
File file1 = new File("e:\\file\\demo1\\demo2\\demo3");
boolean mkdirs = file1.mkdirs();
System.out.println(mkdirs);
//创建文件:
boolean newFile = file.createNewFile();
删除文件或者文件夹:
File file = new File("test2.txt");
boolean delete = file.delete();
System.out.println(delete);
文件或文件夹的重命名:
File file = new File("OnlyFileTest/test.txt");
//路径相同为重命名,路径不同为剪切并重命名:
File file1 = new File("OnlyFileTest/Demo2.txt");
boolean demo2 = file.renameTo(file1);
System.out.println(demo2);
File类的判断功能:
File file = new File("OnlyFileTest/test.txt");
//判断是否是文件夹:
boolean directory = file.isDirectory();
//判断是否是文件:
boolean file2 = file.isFile();
//判断是否存在:
boolean exists = file.exists();
File类的获取功能:
File file = new File("OnlyFileTest/test.txt");
//获取文件的名字:
String name = file.getName();
//获取文件的绝对路径:
String absolutePath = file.getAbsolutePath();
//获取文件的相对路径:
String path = file.getPath();
//获取文件的长度,字节数;
long length = file.length();
//获取文件最后一次修改的毫秒值:
long l = file.lastModified();
高级获取功能:
File file = new File("OnlyFileTest/test.txt");
//获取指定目录下所有文件或者文件夹名称的数组:
String[] list = file.list();
//获取指定目录下所有文件或则文件夹的File数组:
File[] files = file.listFiles();
案例:输出指定目录下以 .jpg 结尾的所有文件:
方式一:
/*
* 判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称
*
* 分析:
* A:封装e判断目录
* B:获取该目录下所有文件或者文件夹的File数组
* C:遍历该File数组,得到每一个File对象,然后判断
* D:是否是文件
* 是:继续判断是否以.jpg结尾
* 是:就输出该文件名称
* 否:不搭理它
* 否:不搭理它
*/
public class FileDemo {
public static void main(String[] args) {
// 封装e判断目录
File file = new File("e:\\"); // 获取该目录下所有文件或者文件夹的File数组
File[] fileArray = file.listFiles(); // 遍历该File数组,得到每一个File对象,然后判断
for (File f : fileArray) {
// 是否是文件
if (f.isFile()) {
// 继续判断是否以.jpg结尾
if (f.getName().endsWith(".jpg")) {
// 就输出该文件名称
System.out.println(f.getName());
}
}
}
}
}
方式二:
/*
* 判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称
* A:先获取所有的,然后遍历的时候,依次判断,如果满足条件就输出。
* B:获取的时候就已经是满足条件的了,然后输出即可。
*
* 要想实现这个效果,就必须学习一个接口:文件名称过滤器
* public String[] list(FilenameFilter filter)
* public File[] listFiles(FilenameFilter filter)
*/
public class FileDemo2 {
public static void main(String[] args) {
// 封装e判断目录
File file = new File("e:\\"); // 获取该目录下所有文件或者文件夹的String数组
// public String[] list(FilenameFilter filter)
String[] strArray = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// return false;
// return true;
// 通过这个测试,我们就知道了,到底把这个文件或者文件夹的名称加不加到数组中,取决于这里的返回值是true还是false
// 所以,这个的true或者false应该是我们通过某种判断得到的
// System.out.println(dir + "---" + name);
// File file = new File(dir, name);
// // System.out.println(file);
// boolean flag = file.isFile();
// boolean flag2 = name.endsWith(".jpg");
// return flag && flag2;
return new File(dir, name).isFile() && name.endsWith(".jpg");
}
}); // 遍历
for (String s : strArray) {
System.out.println(s);
}
}
}
案例二:
递归遍历出所有以 .java 结尾的文件:
/*
* 需求:请大家把E:\JavaSE目录下所有的java结尾的文件的绝对路径给输出在控制台。
*
* 分析:
* A:封装目录
* B:获取该目录下所有的文件或者文件夹的File数组
* C:遍历该File数组,得到每一个File对象
* D:判断该File对象是否是文件夹
* 是:回到B
* 否:继续判断是否以.java结尾
* 是:就输出该文件的绝对路径
* 否:不搭理它
*/
public class FilePathDemo {
public static void main(String[] args) {
// 封装目录
File srcFolder = new File("E:\\JavaSE"); // 递归功能实现
getAllJavaFilePaths(srcFolder);
} private static void getAllJavaFilePaths(File srcFolder) {
// 获取该目录下所有的文件或者文件夹的File数组
File[] fileArray = srcFolder.listFiles(); // 遍历该File数组,得到每一个File对象
for (File file : fileArray) {
// 判断该File对象是否是文件夹
if (file.isDirectory()) {
getAllJavaFilePaths(file);
} else {
// 继续判断是否以.java结尾
if (file.getName().endsWith(".java")) {
// 就输出该文件的绝对路径
System.out.println(file.getAbsolutePath());
}
}
}
}
}
IO流--字符流与字节流--File类常用功能的更多相关文章
- Java IO流字符流简介及基本使用
Java IO流字符流简介及常用字符流的基本使用 字符流分为输入字符流(Writer)和输出字符流(Reader),这两种字符流及其子类字符流都有自己专门的功能.在编码中我们常用的输出字符流有File ...
- Java IO: 其他字符流(下)
作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中的PushbackReader,LineNumberReader,St ...
- JavaSE18-字节缓冲流&字符流
1.字节缓冲流 1.1 字节缓冲流构造方法 字节缓冲流介绍 BufferOutputStream:该类实现缓冲输出流. 通过设置这样的输出流,应用程序可以向底层输出流写 入字节,而不必为写入的每个字节 ...
- 【Java基础】【21IO(字符流)&字符流其他内容&递归】
21.01_IO流(字符流FileReader) 1.字符流是什么 字符流是可以直接读写字符的IO流 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写 ...
- java-IO流-字符流-FileReader、FileWriter、自定义小数组的拷贝、BufferedReader、BufferedWriter、readLine()和newLine()方法、LineNumberReader、使用指定的码表读写字符
###21.01_IO流(字符流FileReader) * 1.字符流是什么 * 字符流是可以直接读写字符的IO流 * 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要 ...
- File类常用的方法与字节流类方法简介
File类常用的方法 获取功能的方法 public String getAbsolutePath() :返回此File的绝对路径名字符串. public String getPath() :将此Fil ...
- C#File类常用的文件操作方法(创建、移动、删除、复制等)
File类,是一个静态类,主要是来提供一些函数库用的.静态实用类,提供了很多静态的方法,支持对文件的基本操作,包括创建,拷贝,移动,删除和 打开一个文件. File类方法的参量很多时候都是路径path ...
- File类获取功能的方法和File类判断功能的方法
File类获取功能的方法-public String getAbsolutePath() :返回此file的绝对路径名字符串 -public String getPath() :将此File转换为路径 ...
- String类常用功能
String类常用功能 判断: boolean equals(Object obj) boolean equalsIgnoreCase(String str) //忽略大小写 boolean star ...
随机推荐
- CS academy Binary Flips(dp)
开学啦,没啥时间写博客..过几天就能又停课啦qwq 做点中等 \(dp\) 题来找找 noip 的感觉 233 题意 原题戳这里. 给你一个 \(n \times m\) 的矩阵 \(A\) ,一开始 ...
- 15 Zabbix Item类型之Zabbix trapper类型
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 15 Zabbix Item类型之Zabbix trapper类型 zabbix获取数据时有时会出 ...
- 【BZOJ5470】[FJOI2018]所罗门王的宝藏()
[BZOJ5470][FJOI2018]所罗门王的宝藏() 题面 BZOJ 洛谷 有\(n+m\)个变量,给定\(k\)组限制,每次告诉你\(a_i+b_j=c_k\),问是否有可行解. 题解 一道很 ...
- EasyFlash 的初始化配置
@2019-02-18 [小记] EasyFlash的初始化流程 easyflash_init ---> ef_port_init ---> sfud_init ---> sfud_ ...
- 【转】Ubuntu 64位系统安装交叉编译环境一直提醒 没有那个文件或目录
安装交叉编译环境搞了一个晚上 一直提示 root@zqs-pc:~# arm-linux-gcc/usr/local/arm/4.3.2/bin/arm-linux-gcc: 行 3: /usr/lo ...
- [2017-8-02]Android Learning Day9
Layout动画效果 为布局添加简单的动画效果 public class MainActivity extends AppCompatActivity { @Override protected vo ...
- KVM改NAT为Bridge
kvm 改nat为桥接在安装一个拥有虚拟化功能的Linux操作系统(此处以CentOS为例),一般我们有两种方法:1.在光盘安装的时候安装好虚拟化包或者PXE服务器上配置好虚拟化包2.手动在没有安装虚 ...
- 【php】php目录路径函数系列
在写框架和项目时候我们经常要获取绝对路径,php有内置函数realpath(), 也可以写个函数来实现这个功能 function getAbsolutePath($path) { $path = s ...
- 使用zabbix监控mariadb性能状态
0x01 前言 zabbix内置Mysql的监控模版,因为mariadb和Mysql两者的相关性,所以这个模版也能用在mariadb services上. 0x02 Mysql 首先要在mariadb ...
- 天梯赛 L2-001 紧急救援
L2-001 紧急救援 (25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道 ...