文章目录
IO处理的是什么?
- 操作系统对于硬件设备进行了进一步的抽象 把硬件设备都视为一个一个的文件 也就是一切皆文件思想
- 而IO操作就是处理的就是这些文件 例如通过网卡传过来的数据 从网卡中接收数据的操作类似于读文件 往网卡中发送数据的操作就类似于写文件
- 那什么是文件? 我们日常生活中txt doc exe .java lib mp3 等等都是一些文件
- 文件简单理解 在外设硬盘上面保存数据的一种方式
- 文件一共可以由两部分构成:属性(文件大小,文件名,文件类型等)+内容(就是文件里面放的是什么)
- 所以我们学 JavaIO ,学什么呢?就学对文件的属性和内容进行操作,而实际写入或者读取的过程,我们称之为IO
绝对路径与相对路径
- 绝对路径
以c: 或者 D: 盘开头的路径 就叫做绝对路径 如 D:\java\test\more - 绝对路径
必须先指定一个工作目录 然后用.
或者..
开头的路径 表示一个具体的文件位置 相对路径的参照点就是当前这个工作的目录(..
表示从当前目录的上一级目录开始找)
例如:
D:\java\test 是绝对路径 而 .\study.txt
是相对路径
D:\java\test\more 是绝对路径 而 ..\study.txt
是相对路径
- 当工作目录发生变化的时候 此时的相对路径的写法就会发生变化 但我们下面构造File对象的时候使用相对路径和绝对路径都是可以的 具体文件是否存在 需要使用 existi 方法判断
- file.getAbsolutePath() 方法获取File对象的绝对路径
File类的常用方法
- 在 java.io 包之中,用 File 类来对文件进行操作(创建、删除、取得信息等)
File类的准备工作
- 常用构造方法
- public File(String pathname) 创建指定路径文件对象
- public File(String parent, String child) 同上,但可指明父路径和子路径
import java.io.File;
public class IOTest {
public static void main(String[] args) {
String path = "D:\\java\\test\\more";
String pathname = path + "\\moreTest.txt";
File file = new File(pathname);
}
}
File类的基本文件操作
- public boolean exists() 测试指定路径中文件或者目录是否存在
- public boolean isDirectory() 判定一个文件是目录
- public boolean isFile() 判定是否是文件
- public boolean delete() 删除文件
- public boolean createNewFile() throws IOException 创建一个新文件
import java.io.File;
import java.io.IOException;
public class IOTest {
public static void main(String[] args) {
String path = "D:\\java\\test\\more";
String pathname = path + "\\moreTest.txt";
File file = new File(pathname);
//判断是否存在
System.out.print("判断是否存在");
System.out.println(file.exists());
//如果存在就查看是否为目录或者文件
if (file.exists()) {
//判断是否目录
System.out.println("判断是否目录" + file.isDirectory());
//判断是否文件
System.out.println("判断是否文件" + file.isFile());
}
//删除文件
System.out.print("删除文件");
System.out.println(file.delete());
if(!file.exists()){
System.out.println("删除文件成功!");
} else {
System.out.println("删除文件失败!");
}
//创建文件
if (! file.exists()) {
try {
System.out.print(file.createNewFile());
System.out.println("创建成功");
} catch (IOException e) {
System.out.println("创建失败");
}
} else {
System.out.println("file存在不需要创建");
}
System.out.println("最后file是否存在" + file.exists());
}
}
File类的目录操作
- public boolean mkdir() 创建一个空目录
- public boolean mkdirs() 创建目录(无论有多少级父目录,都会创建)
- public String getParent() 取得父路径
- public File getParentFile() 取得父File对象
import java.io.File;
public class IOTest2 {
public static void main(String[] args) {
String path = "D:\\java\\test\\more";
//要创建的目录
String dir = "\\dir1\\dir2\\dir3";
String pathname = path + dir;
File file = new File(pathname);
System.out.println("file是否存在" +file.exists());
System.out.println("创建成功"+ file.mkdirs());
System.out.println("file是否存在" +file.exists());
System.out.println("获得父路径" + file.getParent());
File filePar = file.getParentFile();
System.out.println("获得父对象" + filePar);
}
}
File类的文件属性操作
- public long length() 取得文件大小(字节)
- public long lastModified() 最后一次修改日期
import javax.xml.crypto.Data;
import java.io.File;
import java.util.Date;
public class IOTest3 {
public static void main(String[] args) {
String path = "D:\\java\\test\\more\\";
String name = "moreTest.txt";
File file = new File(path + name);
//获得文件字节大小 注意返回的是long类型
System.out.println("moreTest.txt" + "大小为" + file.length());
//最近修改时间
System.out.println("moreTest.txt最近修改时间为" + new Date(file.lastModified()));
}
}
File类的其他操作
- public File[] listFiles() 列出一个目录指定的全部组成
import java.io.File;
public class IOTest4 {
public static void main(String[] args) {
File file = new File("D:\\java");
File[] files = file.listFiles();
for (File f : files
) {
System.out.println(f);
}
}
}
实现递归打印文件目录列表
- 虽然File提供有 listFiles() 方法,但是这个方法本身只能够列出本目录中的第一级信息。如果要求列出目录中所有级的信息,必须自己来处理。这种操作就必须通过递归的模式来完成。
import java.io.File;
public class IOTest4 {
public static void main(String[] args) {
File file = new File("D:\\java");
listAllFiles(file);
/* File[] files = file.listFiles();
for (File f : files
) {
System.out.println(f);
}*/
}
private static void listAllFiles(File file) {
if (file.isDirectory()) {
//如果是目录 就获得其目录的所有组成
File[] files = file.listFiles();
//递归遍历所有组成
assert files != null;
for (File f : files
) {
listAllFiles(f);
}
} else {
//说明是文件就输出其路径
System.out.println(file);
}
}
}