目录
引言:程序设计中的分层问题
1.输入源可能有很多
2.整个数据流上会有各种加工厂(Java中的一个个对象)
文件
1.1 理解文件
文件(File):操作系统组织数据的一种方式
- 硬盘上的文件
eg:在windows操作中,经常在硬盘上创建的各种.txt, .doc, .exe, .java, .lib, .mp3等等,都可以称之为文件 - 包括:硬盘、网络、屏幕、键盘都有可能被组织成文件
1.2 File类
java用来描述文件用的是:类 File
通常一个文件有以下三个权限:
1.是否可读
2.是否可写
3.是否可执行
1.2.1 File类的构造方法
java.io.File 类是一个普通的类,如果要实例化对象,则常用到两个构造方法
方法 | 解释 |
---|---|
public File(String pathname) | 创建指定路径文件对象 |
public File(String parent, String child) | 创建指定路径文件对象,但可指明父路径和子路径 |
1.3 File类的常用方法
1.3.1 基本文件操作
方法 | 解释 |
---|---|
public boolean exists() | 测试指定路径中文件或者目录是否存在 |
public boolean isDirectory() | 判定一个文件是否是目录 |
public boolean isFile() | 判断是否是文件 |
public boolean delete() | 删除文件 |
public boolean createNewFile() throws IOException | 创建一个新文件 |
1.3.2 目录操作
方法 | 解释 |
---|---|
public boolean mkdir() | 创建一个空目录 |
public boolean mkdirs() | 创建目录(无论有多少级父目录,都会创建) |
public String getParent() | 取得父路径 |
public File getParentFile() | 取得父File对象 |
1.3.3 文件属性操作
方法 | 解释 |
---|---|
public long length() | 取得文件大小(字节) |
public long lastModified() | 最后一次修改日期 |
1.3.4 其他操作
方法 | 说明 |
---|---|
public File[] listFiles() | 列出一个目录指定的全部组成 |
程序
public class Main {
public static void main(String[] args) throws IOException {
/* 构造方法一: public File(String pathname) */
File file = new File("C:\\Users\\阮梦\\Desktop\\bite\\javaweb_多线程_IO\\2019-11-29-文件IO\\测试目录");
/* 构造方法二: public File(String parent, String child) */
File file1 = new File("C:\\Users\\阮梦\\Desktop\\bite\\javaweb_多线程_IO\\2019-11-29-文件IO\\测试目录",
"test.txt");
file1.createNewFile();//创建文件 会抛出异常(有可能上级目录也不存再)
//注意:
// **file1创建的文件此时并不存在 但编译正确
// **我们只是创建了一个File对象 不保证文件一定存在
// **调用file1.createNewFile()来创建文件
file1.delete(); //删除文件
file1.deleteOnExit();//在jvm虚拟机退出时再删除文件 相当于临时文件
file1.mkdir();//创建目录
File file2 = new File("C:\\Users\\阮梦\\Desktop\\bite\\javaweb_多线程_IO\\2019-11-29-文件IO\\测试目录",
"1\\2\\3\\test.txt");
file2.mkdirs();//创建多级目录
//注意:
// **mkdirs()允许上级目录不存在
// **mkdir()若上级目录不存在 运行正确 但不会创建目录
System.out.println("是否存在:" + file.exists());
System.out.println("是否是文件夹:" + file.isDirectory());
System.out.println("该盘符的空闲空间: " + file.getFreeSpace());
System.out.println("该盘符的可用空间: " + file.getUsableSpace());
//一般情况是file.getFreeSpace() = file.getUsableSpace()
System.out.println("该盘符的总空间: " + file.getTotalSpace());
System.out.println("绝对路径: " + file.getAbsolutePath());
System.out.println("上一级路径:" + file.getParent());
System.out.println("可读: " + file.canRead());
System.out.println("可写: " + file.canWrite());
System.out.println("可执行: " + file.canExecute());
System.out.println("是否是隐藏文件: "+file.isHidden());
System.out.println("当前文件大小: "+file.length());
System.out.println("==================================");
File file3 = new File("C:\\Users\\阮梦\\Desktop\\bite\\javaweb_多线程_IO\\2019-11-29-文件IO");
File[] files = file3.listFiles();
for (File f : files) {
System.out.println(f.getAbsolutePath());
}
System.out.println("==================================");
File[] rootsfiles = File.listRoots(); //属于类的方法
for (File f : rootsfiles) {
System.out.print(f);//列出所有根节点
System.out.println("根目录是否存在"+f.exists());
}
/*
C:\根目录是否存在true
D:\根目录是否存在true
E:\根目录是否存在true
*/
}
}
1.4 绝对路径/相对路径
-
绝对路径():从根路径开始的一个文件的路径
eg: 1. 在Windows上
C:\Windows
2.在Linux上
/root/hello/ -
相对路径():相对当前路径的一个路径
1.是相对于运行时期的路径——程序启动时的路径: 工作路径(work directory)
2. 上一级路径…
当前路径.注:1.相对路径是运行期间定位的
2.相对于进程的工作路径:启动时的路径
java中一般无法修改,如果通过其他语言(c\c++)是可以修改工作路径的