创建一个新文件
import java.io.File;
import java.io.IOException;
public class IOOperation {
public static void main(String[] args) {
File f = new File("D:\\hello.txt");
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果:程序运行之后,在D盘下会有一个名字为hello.txt的文件。
可能会出现如下错误:
java.io.IOException: 拒绝访问。
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:883)
at io.file.IOOperation.main(IOOperation.java:10)
表示当前用户没有D盘的写入权限。
File类的两个常量
import java.io.File;
public class IOOperation {
public static void main(String[] args) {
System.out.println(File.separator);
System.out.println(File.pathSeparator);
}
}
运行结果:
-----------------------------------------------------------------------
\
;
-----------------------------------------------------------------------
此处多说几句:有些同学可能认为,我直接在windows下使用\进行分割不行吗?当然是可以的。但是在linux下就不是\了。所以,要想使得我们的代码跨平台,更加健壮,所以,大家都采用这两个常量吧。
现在我们使用File类中的常量改写上面的代码:
import java.io.File;
import java.io.IOException;
public class IOOperation {
public static void main(String[] args) {
File f = new File("D:" + File.separator + "hello.txt");
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
删除一个文件
import java.io.File;
public class IOOperation {
public static void main(String[] args) {
String fileName = "D:" + File.separator + "hello.txt";
File f = new File(fileName);
if (f.exists()) {
f.delete();
} else {
System.out.println("文件不存在!");
}
}
}
运行结果:D盘删除hello.txt文件,或提示文件不存在!
创建一个文件夹
import java.io.File;
public class IOOperation {
public static void main(String[] args) {
String fileName = "D:" + File.separator + "hello";
File f = new File(fileName);
f.mkdir();
}
}
运行结果:在D盘创建了一个hello文件夹
Mkdir和mkdirs的区别:
boolean mkdir():创建此抽象路径名指定的目录。
boolean mkdirs():创建此抽象路径名指定的目录,包括创建必需但不存在的父目录。
也就是说需要创建多层目录时,需要使用mkdirs。
列出指定目录的全部文件(包括隐藏文件):
import java.io.File;
public class IOOperation {
public static void main(String[] args) {
String fileName = "D:" + File.separator;
File f = new File(fileName);
String[] strArr = f.list();
for(String str : strArr){
System.out.println(str);
}
}
}
运行结果:
$RECYCLE.BIN
MyDrivers
Program Files
Program Files (x86)
RECYCLER
System Volume Information
tools
work
但是使用list返回的是String数组,。而且列出的不是完整路径,如果想列出完整路径的话,需要使用listFiles.他返回的是File的数组
列出指定目录的全部文件(包括隐藏文件):
import java.io.File;
public class IOOperation {
public static void main(String[] args) {
String fileName = "D:" + File.separator;
File f = new File(fileName);
File[] fileArr = f.listFiles();
for (File file : fileArr) {
System.out.println(file);
}
}
<span style="font-family:Microsoft YaHei;font-size:14px;">}</span>
运行结果:
D:\$RECYCLE.BIN
D:\MyDrivers
D:\Program Files
D:\Program Files (x86)
D:\RECYCLER
D:\System Volume Information
D:\tools
D:\work
判断一个指定的路径是否为目录
import java.io.File;
public class IOOperation {
public static void main(String[] args) {
String fileName = "D:" + File.separator;
File f = new File(fileName);
if (f.isDirectory()) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
}
运行结果:YES
搜索指定目录的全部内容
import java.io.File;
public class IOOperation {
public static void main(String[] args) {
String fileName = "F:" + File.separator;
File f = new File(fileName);
print(f);
}
private static void print(File f) {
if (f != null) {
if (f.isDirectory()) {
File[] fileArr = f.listFiles();
if (fileArr != null) {
for (File file : fileArr) {
print(file);
}
}
} else {
System.out.println(f);
}
}
}
}
运行结果:
F:\jar\apache-log4j-1.2.15.zip
F:\jar\java_memcached-release_2.6.6.zip
F:\jar\log4j-1.2.17.zip
F:\jar\Memcached-Java-Client-3.0.0.jar
F:\jar\Memcached-Java-Client-release_2.6.1.tar.gz
F:\jar\spring-framework-3.2.0.RELEASE-dist.zip
F:\下载\QMDownload\Hotfix\install_flash_player_14_active_x_pa185.exe.tdl
F:\下载\QMDownload\Hotfix\install_flash_player_14_active_x_pa185.exe.tdlex
F:\下载\QMDownload\SoftMgr\PCMgr_Setup_10_0_15100_225.exe
F:\下载\QMDownload\SoftMgr\QQ6.0-6.0.11743.0.exe
F:\工作软件\16\51CTO下载-crack\pdflm16.dll
F:\工作软件\16\51CTO下载-crack.rar
F:\工作软件\16\pdflm16.dll
F:\工作软件\16\PowerDesigner160_Evaluation.exe
F:\工作软件\apache-maven-3.1.0-alpha-1-bin.tar.gz
F:\工作软件\apache-maven-3.2.1-bin.zip
......
使用RandomAccessFile写入文件
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class IOOperation {
public static void main(String[] args) throws IOException {
String fileName = "D:" + File.separator + "hello.txt";
File f = new File(fileName);
RandomAccessFile demo = new RandomAccessFile(f, "rw");
demo.writeBytes("asdsad");
demo.writeInt(12);
demo.writeBoolean(true);
demo.writeChar('A');
demo.writeFloat(1.21f);
demo.writeDouble(12.123);
demo.close();
}
}
运行结果:在hello.txt文件中写入数据,写入的数据是存在乱码。
当路径下没有hello.txt文件时,会自动创建hello.txt文件。