学习JavaIO流,不得不提的就是File类,与文件本身有关的类,而我们学习的就是File类里的方法以及常量。
(1)创建一个新的文件 createNewFile()
提醒:使用这个方法得抛出异常或者是try...catch来处理
package com.dengdi.file;
import java.io.File;
import java.io.IOException;
public class FileDemo01 {
public static void main(String[] args) {
File file=new File("E:\\test.txt");//给定路径
try {
file.createNewFile();//创建新文件
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这里得介绍File类中的常量pathSeparator和separator,pathSeparator是表示路径的分隔符(windows中是";"),separator也是表示路径的分隔符(windows中是"\")。而我们在实际开发中最好使用常量来表示分隔符,来达到可移植性的目的。
package com.dengdi.file;
import java.io.File;
import java.io.IOException;
//使用File.separator方法创建文件
public class FileDemo02 {
public static void main(String[] args) {
String path="E:"+File.separator+"test01.txt";
File file=new File(path);
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
(2)删除一个文件 delet()以及判断文件是否存在 exists()
package com.dengdi.file;
import java.io.File;
public class FileDemo03 {
public static void main(String[] args) {
File file=new File("E:"+File.separator+"test.txt");
if(file.exists()){ //判断文件是否存在
file.delete(); //删除文件
System.out.println("已经删除文件");
}else{
System.out.println("找不到文件");
}
}
}
在程序执行完毕之后,文件不会立刻删除或者创建,会有些延迟,因为所有操作都需要通过JVM完成所造成。
综合创建和删除文件的操作
package com.dengdi.file;
import java.io.File;
import java.io.IOException;
public class FileDemo04 {
public static void main(String[] args) {
File file=new File("E:"+File.separator+"test.txt");
if(file.exists()){
System.out.println("文件存在,删除文件");
file.delete();
}else{
System.out.println("文件不存在,创建文件");
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
(3)创建一个文件夹 mkdir()
package com.dengdi.file;
import java.io.File;
public class FileDemo05 {
public static void main(String[] args) {
File file=new File("E:"+File.separator+"pratice");
boolean flag=file.mkdir();//创建文件夹
System.out.println("创建文件夹是否成功:"+flag);
}
}
(4)列出指定目录的全部文件
public String[] list()
public File[] listFiles()
package com.dengdi.file;
import java.io.File;
public class FileDemo06 {
public static void main(String[] args) {
File file=new File("E:"+File.separator);
String[] strs=file.list();//列出给定目录的内容,返回全部名称
for(String str:strs){
System.out.println(str);
}
File[] files=file.listFiles();
for(File f:files){
System.out.println(f);//列出给定目录的内容,返回file对象数组
}
}
}
(5)判断一个给定的路径是否为目录 isDiretory()
package com.dengdi.file;
import java.io.File;
public class FileDemo07 {
public static void main(String[] args) {
File file=new File("E:"+File.separator+"vnc");
if(file.isDirectory()){
System.out.println("E:"+File.separator+"vnc:"+"是目录");
}else{
System.out.println("E:"+File.separator+"vnc:"+"不是目录");
}
}
}
综合练习
package com.dengdi.file;
/**
* 采用递归的调用形式不断地判断传来的是否是目录
* 如果是目录,则继续列出子目录
* 如果不是,就输出
*/
import java.io.File;
public class FileDemo08 {
public static void main(String[] args) {
File newFile = new File("E:" + File.separator+"vnc");
print(newFile);
}
public static void print(File file) { //递归调用此方法
if (file.exists()) { //判断是否存在
if (file.isDirectory()) { //判断是否是文件夹
File[] files = file.listFiles(); //列出文件
for (File f : files) { //循环遍历
print(f);
}
}else{
System.out.println(file);
}
}
}
}