IO的概念
JAVA中I/O代表输入(input)和输出(output)
Java中用“流(stream)”来抽象表示这么一个写入写出的功能,封装成一个“类”,都放在java.io这个包里面。
详细解析
I/O
文件和文件夹都是用File这个类来代表的
文件对象
import java.io.File;
/**
* CreateFile
*/
public class CreateFile {
public static void main(String[] args) {
// 绝对路径
File test = new File("F:/Study/xuanSAMA/Study/IO/test/HelloWorld.txt");
System.out.println("文件创建成功!路径为:" + test.getAbsolutePath());
// 相对路径
File test1 = new File("test/HelloWorld.txt");
System.out.println("文件创建成功!路径为:" + test1.getAbsolutePath());
// 以某个路径作为父目录创建文件
File test2 = new File("test","HelloWorld.txt");
System.out.println("文件创建成功!路径为:" + test2.getAbsolutePath());
// 仅仅是创建了这个对象,该对象在硬盘上不一定真正存在
}
}
一些常用方法
基本的
import java.io.File;
import java.sql.Date;
public class IoMethod {
public static void main(String[] args) {
File test = new File("F:/Study/xuanSAMA/Study/IO/test/HelloWorld.txt");
// 判断文件对象是否在硬盘上存在
System.out.println(test.exists());
// 判断文件对象是否是个文件
System.out.println(test.isFile());
// 判断文件对象是否是个文件夹
System.out.println(test.isDirectory());
// 获取文件的长度(字节)
System.out.println(test.length());
// 获取文件最后一次的修改时间
System.out.println(new Date(test.lastModified()));
// 设置文件最后一次修改时间(时间戳)
test.setLastModified(0);
System.out.println(new Date(test.lastModified()));
// 文件重命名
File toName = new File("F:/Study/xuanSAMA/Study/IO/test/Re.txt");
test.renameTo(toName);
System.out.println(test);
// 可以发现test打印出来还是原本的,重命名只是改硬盘上文件的名称,对象不会受影响
}
}
更多的
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
public class IoMethod1 {
public static void main(String[] args) throws IOException {
File test = new File("test/");
// 以字符串数组的形式返回当前文件夹下的所有文件和文件夹(不包含子文件夹和子文件)
System.out.println(Arrays.toString(test.list()));
// 以文件数组的形式返回当前文件夹下所有文件(不包含子文件夹和子文件)
System.out.println(Arrays.toString(test.listFiles()));
File test1 = new File("test/Re.txt");
// 以字符串的形式返回文件的所在目录(父级目录)
System.out.println(test1.getParent());
// 创建文件夹,如父文件夹不存在,则不创建
File test2 = new File("test/test/test");
System.out.println(test2.mkdir());
// 创建文件夹,如父文件夹不存在,则创建父文件夹
System.out.println(test2.mkdirs());
File test3 = new File("new Folderio/HelloIO.txt");
// 创建一个空文件,如父文件夹不存在,则抛出异常
try {
System.out.println(test3.createNewFile());
} catch (IOException e) {
System.out.println("父文件夹不存在!!");
}
// 所以创建一个文件之前就得用mkdirs创建文件夹
test3.getParentFile().mkdirs();
System.out.println(test3.createNewFile());
// 列出所有盘符
System.out.println(Arrays.toString(File.listRoots()));
// 删除文件
System.out.println(test3.delete());
// JVM结束时删除文件,用于临时文件的创建
test3.deleteOnExit();
}
}
文件对象练习
一般说来操作系统都会安装在C盘,所以会有一个 C:\WINDOWS目录。
遍历这个目录下所有的文件(不用遍历子目录)
找出这些文件里,最大的和最小(非0)的那个文件,打印出他们的文件名
import java.io.File;
public class pratice {
public static void main(String[] args) {
File win = new File("C:/Windows");
File[] fileArr = win.listFiles();
long maxFile = 0;
long minFile = 999999;
File maxFile2 = new File("null"),minFile2 = new File("null");
for (File file : fileArr) {
if (file.length() > maxFile) {
maxFile2 = file;
maxFile = file.length();
}
if (file.length() < minFile & file.length() != 0) {
minFile2 = file;
minFile = file.length();
}
}
System.out.printf("在windows中最大文件是%s最小的文件是%s",maxFile2.getName(),minFile2.getName());
}
}