Java中的IO操作
一、IO简介
1. 概述
IO 是in/out的简称,是相对于程序而言的读取in和写出out动作。
2. 工具类(java.io包)
在Java中,根据处理的数据单位不同,分为字节流和字符流。
- File—文件工具类。
- 字节流:针对二进制文件。
- InputStream
–FileInputStream
–BufferdInputStream
–ObjectInputStream- OutputStream
–FileOutputStream
–BufferedOutputStream
–ObjectOutputStream
- 字符流:针对文本文件。读写容易发生乱码现象,在读写时最好指定编码集为utf-8。
- Reader
–InputStreamReader
–BufferedReader
–PrintWriter/PrintStream- Writer
–OutputStreamWriter
–BufferedWriter
流的概念:数据的读写抽象成数据,在管道中流动。
- 流只能单方向流动;
- 输入流用来读取in;
- 输出流用来读出Out;
数据只能从头到尾顺序的读写一次。
二、File文件流
1. 概述
封装一个磁盘路径字符串,对这个路径可以进行一次操作。可以用来封装文件路径、文件夹的路径、不存在的路径。是文件和目录路径名的抽象表示形式。
2. 创建对象
- File(String pathname)
—Creates a new File instance by converting the given pathname string into an abstract pathname.【通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。】
3. 常用方法
- 文件、文件夹属性
length():文件的字节量;
exists():是否存在,存在返回true;
isFile():是否为文件,是文件返回true;
isDirectory():是否为文件夹,是文件夹返回true;
getName():获取文件/文件夹名;
getParent():获取父文件夹的路径;
getAbsolutePath():获取文件的完整路径。
- 创建、删除
createNewFile():新建文件,文件夹不存在会异常,文件已经存在返回false;
mkdirs():新建多层不存在的文件夹\a\b\c;
mkdir():新建单层不存在的文件夹\a;
delete():删除文件,删除空文件夹。
- 文件夹列表
list():返回String[],包含文件名;
listFile():返回File[],包含文件对象。
package cn.tonyoliver.io;
/**
* 这个类用来测试File的常用方法
*/
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
public class Test05_File {
public static void main(String[] args) throws IOException {
// 1.创建File对象 -- 参数可以是文件路径,也可以是文件夹路径
File file = new File("Z:\\iotest\\1.txt");
// 2.调用方法
System.out.println(file.length());//获取字节量
System.out.println(file.exists());//判断文件是否存在
System.out.println(file.isFile());//判断是文件吗
System.out.println(file.isDirectory());//判断是文件夹吗
System.out.println(file.getName());//获取文件名
System.out.println(file.getParent());//获取父路径
System.out.println(file.getAbsolutePath());//获取完整路径
file = new File("Z:\\iotest\\2.txt");
System.out.println(file.createNewFile());//创建不存在的新文件
file = new File("Z:\\iotest\\a");
System.out.println(file.mkdir());//创建 一级 不存在的文件夹
file = new File("Z:\\iotest\\a\\b\\c\\d");
System.out.println(file.mkdirs());//创建 多级不存在的文件夹
System.out.println(file.delete());//删除文件 或者 删除空的文件夹
file = new File("Z:\\iotest");
String[] strs = file.list();//列出文件夹的所有资源
System.out.println(Arrays.toString(strs));//都是资源名称
File[] fs = file.listFiles();
System.out.println(Arrays.toString(fs));
//获取文件夹下的每个资源,判断是文件还是文件夹
File f = new File("Z:\\iotest");//指定了想要列的文件夹
File[] a = f.listFiles();
long size = 0;//定义变量,记录文件的和
//遍历数组
for (int i = 0; i < a.length; i++) {
if(a[i].isFile()) {
size = size + a[i].length();
}else if(a[i].isDirectory()) {
System.out.println("这是一个文件夹");
}
}
}
}