File对象有时称为文件处理程序,尤其是在微软视窗系统。
时刻记住Java是面向对象编程语言,万物皆可对象(指向你的对象233)

Java File类
• file类包含用于操作文件属性的方法和目录,以及重命名、创建和删除文件/目录,但不读取和写入文件内容
• file类提供了隐藏复杂来自用户程序的平台相关操作
• file 类以统一的方式处理不同系统中的路径命名约定

File Size and Save on Disk Size文件实际大小和磁盘分配保存大小

file size文件大小:文件中实际字节数
save on disk size磁盘保存大小:非配给文件的集群数(见前磁盘数据保存原理)

File Attributes文件属性

Attributes Identifier Description
R Read-only file. File cannot be deleted or modified.
A Archive file. Some backup software will be check if a file is marked with “A”, ifyes backup the file, then remove the mark.
S System file. An important file that is used by the system.
H Hidden from the normal view.
O The data of a file is not available immediately. This attribute indicates that the file data is physically moved to offline storage.
I The file or directory is not to be indexed by the content indexing service.
X The user data stream not to be read by the background data integrity scanner(AKA scrubber).
V Integrity of the file
P Always available offline (always keep on this device)
U Opposite of the P attribute

基础操作API

Method Description
canExecute( ) Check if the file can be executed执行.
canRead( ) Check if the file can be read读取.
canWrite( ) Check if the file can be modified写入/修改.
createNewFile( ) Create an empty file with a name specified, if any only the file doesn’t exist创建空文件.
delete( ) Delete the file or directory删除文件或目录.
deleteOnExit( ) Delete the file or directory when the virtual machine terminates在虚拟机终止时删除文件或目录.
exists( ) Check whether the file or directory exists检查文件或目录是否存在.
getAbsolutePath( ) Return the absolute path name in String返回字符串中的绝对路径名称.
getName( ) Return the name of the file or directory返回文件或目录的名称.
getPath( ) Return the path路径 name in String返回字符串中的路径名称.
isFile( ) Check if it is a normal file检查它是否为普通文件.
isDirectory( ) Check if it is a directory检查它是否为目录.
length( ) Return the length of the file in bytes以字节为单位返回文件的长度.
list( ) Returns an array of file/directory names 返回文件/目录名称的数组.
renameTo(File dest) Renames the file重命名.

路径

构造File对象时,既可以传入绝对路径,也可以传入相对路径。绝对路径是以根目录开头的完整路径,例如:

File f = new File("C:\\Windows\\notepad.exe");

相对目录

// 假设当前目录是C:\Docs 
File f1 = new File("sub\\javac"); 
// 绝对路径是 C:\Docs\sub\javac</pre>

注意Windows平台使用\作为路径分隔符,在Java字符串中需要用\表示一个\。Linux平台使用/作为路径分隔符。

指向简要

File file1 = new File("TestFolder\\MiniTest1.java");
File file2 = new File("TestFolder\\MiniTest1.java");//两个file对象指向了同一个文件,将会有同样的属性
File file1 = new File("TestFolder\\MiniTest2.java");//如果指向的是一个不存在的文件,运行结束后也不会自动创建
System.out.println(file1.canRead()); // false
System.out.println(file1.exists()); // false
System.out.println(file1.isFile()); // false
System.out.println(file1.length()); // 0
System.out.println(file1.getName()); // MiniTest2.java(注意这个)

尝试创建新的文件

import java.io.File;
import java.io.IOException;//加载IO异常
public class TestFilesIO {
public static void main(String[] args) {
File file1 = new File("TestFolder\\MiniTest2.java");
System.out.println(file1.canRead()); // false
System.out.println(file1.exists()); // false
System.out.println(file1.isFile()); // false
System.out.println(file1.length()); // 0
System.out.println(file1.getName()); // MiniTest2.java
try {
file1.createNewFile();//尝试创建对象文件
} catch (IOException ioe) {
}//注意默认值
System.out.println(file1.canRead()); // true
System.out.println(file1.exists()); // true
System.out.println(file1.isFile()); // true
System.out.println(file1.length()); // 0
System.out.println(file1.getName()); // MiniTest2.java
}
}

删除文件

import java.io.File;
public class TestFilesIO {
public static void main(String[] args) {
File file1 = new File("TestFolder\\MiniTest2.java");
file1.delete();
    }
}

重命名(不更改路径!)

import java.io.File;
public class TestFilesIO {
public static void main(String[] args) {
File file1 = new File("TestFolder\\MiniTest2.java");
File file2 = new File("TestFolder\\MiniTest3.java");
file1.renameTo(file2);//让file1的名字和file2相同,但是路径TestFolder\\MiniTest2.java已经不存在了!file1指向的文件不存在,所有出现了以下东东
System.out.println(file1.canRead() + " " + file2.canRead()); // false, true
System.out.println(file1.exists() + " " + file2.exists()); // false, true
System.out.println(file1.isFile() + " " + file2.isFile()); // false, true
System.out.println(file1.isDirectory() + " " + file2.isDirectory()); // false, false
System.out.println(file1.length() + " " + file2.length()); // 0, 0
System.out.println(file1.getName() + " " + file2.getName()); // MiniTest2.java, MiniTest3.java
}
}

使用扫描仪读取文本文件

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ReadWriteFile {
public static void main(String[] args) {
File records = new File("TestFolder\\ScoreSheet.txt");
try {
Scanner recs = new Scanner(records);
recs.nextLine();
while (recs.hasNext()) {
String name = recs.next();
String sNum = recs.next();
double score = recs.nextDouble();
System.out.println(name + ", " + sNum + ", " + score);
}
recs.close();
} catch (FileNotFoundException e) {
}
}
}

使用 PrintWriter 编写文本文件

tips:
(1)默认情况下,print() 方法会覆盖现有文件!
(2)在程序执行完成后需要使用close()关闭文件
正确增加姿势

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class ReadWriteFile {
public static void main(String[] args) {
FileWriter fw;
try {
fw = new FileWriter("TestFolder\\ScoreSheet.txt", true);
PrintWriter pw = new PrintWriter(fw);
pw.print("DPD 0000 0.5");
pw.close();
} catch (IOException e1) {
}
}
}
最后修改日期:2019年12月24日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。