JAVA_基础IO流(一)
IO流
File类的使用
java.io.File
类:文件和文件目录路径的抽象表示形式,与平台无关。File
能新建、删除、重命名文件和目录,但File
不能访问文件内容本身。 如果需要访问文件内容本身,则需要使用输入/输出流。- 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个
File
对 象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。 File
对象可以作为参数传递给流的构造器。
-
如何创建
File
类的实例
public File(String pathname):以pathname
为路径创建File
对象,可以是绝对路径或者相对路径,如果pathname
是相对路径,则默认的当前路径在系统属性user.dir
中存储。File file1 = new File("hello.txt");// 相对于当前module File file2 = new File("F:\\Java\\JavaSenior\\month12-day07\\he.txt");// 绝对路径 System.out.println(file1);// hello.txt System.out.println(file2);// F:\Java\JavaSenior\month12-day07\he.txt
public File(String parent,String child):以
parent
为父路径,child
为子路径创建File
对象。File file3 = new File("F:\\Java\\JavaSenior","month12-day07"); System.out.println(file3);// F:\Java\JavaSenior\month12-day07
public File(File parent,String child):根据一个父
File
对象和子文件路径创建File
对象。File file4 = new File(file3, "hi.txt"); System.out.println(file4); // F:\Java\JavaSenior\month12-day07\hi.txt
-
相对路径:相较于某个路径下,指明的路径
绝对路径:包含盘符在内的文件或文件路径 -
路径分隔符
windows和DOS系统:\\
unix和URL:/
Java程序支持跨平台运行,因此路径分隔符要慎用。
为了解决这个隐患,File
类提供了一个常量:public static final String separator
。根据操作系统,动态的提供分隔符。File file1 = new File("d:\\atguigu\\info.txt"); File file2 = new File("d:" + File.separator + "atguigu" + File.separator + "info.txt"); File file3 = new File("d:/atguigu");
File类的获取功能
public String getAbsolutePath():获取绝对路径 。
public String getPath() :获取路径 。
public String getName() :获取名称 。
public String getParent():获取上层文件目录路径。若无,返回null
。
public long length() :获取文件长度(即:字节数)。不能获取目录的长度。
public long lastModified() :获取最后一次的修改时间,毫秒值 。
如下方法适用于文件目录
public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组 。
public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File
数组。
public void Test2() {
File file1 = new File("hello.txt");
File file2 = new File("F:\\OfficeFile\\JAVA_IO\\hi.txt");
System.out.println(file1.getAbsolutePath());
System.out.println(file1.getName());
System.out.println(file1.getParent());
System.out.println(file1.length());
System.out.println(new Date(file1.lastModified()));
System.out.println();
System.out.println(file2.getAbsolutePath());
System.out.println(file2.getName());
System.out.println(file2.getParent());
System.out.println(file2.length());
System.out.println(file2.lastModified());
}
public void test3() {
File file = new File("F:\\Java\\JavaSenior\\month12-day07");
String[] list = file.list();
for (String s : list) {
System.out.println(s);
}
File[] files = file.listFiles();
for (File s : files) {
System.out.println(s);
}
}
public boolean renameTo(File dest):把文件重命名为指定的文件路径。
以 file1.renameTo(file2) 为例:
要像保证返回true,需要file1在硬盘中是存在的,且file2不能在硬盘中存在。
public void test4() {
File file1 = new File("hello.txt");
File file2 = new File("F:\\OfficeFile\\JAVA_IO\\hi.txt");
boolean renameTo = file1.renameTo(file2);
System.out.println(renameTo);
}
File类常用方法
File类的判断功能
public boolean isDirectory():判断是否是文件目录。
public boolean isFile() :判断是否是文件。
public boolean exists() :判断是否存在。
public boolean canRead() :判断是否可读。
public boolean canWrite() :判断是否可写。
public boolean isHidden() :判断是否隐藏
public void test5() {
File file1 = new File("hello.txt");
System.out.println(file1.isDirectory());
System.out.println(file1.isFile());
System.out.println(file1.exists());
System.out.println(file1.canRead());
System.out.println(file1.canWrite());
System.out.println(file1.isHidden());
System.out.println();
File file2 = new File("F:\\OfficeFile\\JAVA_IO");
System.out.println(file1.isDirectory());
System.out.println(file1.isFile());
System.out.println(file1.exists());
System.out.println(file1.canRead());
System.out.println(file1.canWrite());
System.out.println(file1.isHidden());
}
File类的创建硬盘中对应文件或目录
public boolean createNewFile() :创建文件。若文件存在,则不创建,返回false
。
public boolean mkdir() :创建文件目录。如果此文件目录存在,就不创建了。 如果此文件目录的上层目录不存在,也不创建。
public boolean mkdirs() :创建文件目录。如果上层文件目录不存在,一并创建。
public boolean delete():删除磁盘中的文件或者文件夹 删除注意事项: Java中的删除不走回收站。 要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录。
文件的创建:
public void test6() {
File file1 = new File("Hi.txt");
if (!file1.exists()) {
try {
boolean newFile = file1.createNewFile();
if (newFile) System.out.println("创建成功");
} catch (IOException e) {
e.printStackTrace();
}
}else {
boolean delete = file1.delete();
if (delete) System.out.println("删除成功");
}
}
文件目录的创建:
public void test7() {
File file1 = new File("F:\\OfficeFile\\JAVA_IO\\IO01\\io03");
boolean mkdir = file1.mkdir();
if (mkdir) System.out.println("创建成功1");
File file2 = new File("F:\\OfficeFile\\JAVA_IO\\IO02\\io04");
boolean mkdirs = file2.mkdirs();
if (mkdirs) System.out.println("创建成功2");
}
FIle
类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO
流来完成。