您的位置:首页 > 其它

[学习笔记]File类简单用法!

2016-04-16 13:32 549 查看
今天我们学习一下java中的File类

相应的API文档:File类

以下是本人做的一些整理:
下面的构造函数可以用来生成File 对象:

File(File parent, String child)


根据 parent 抽象路径名和 child 路径名字符串创建一个新
File
实例。
File(String pathname)


通过将给定路径名字符串转换为抽象路径名来创建一个新
File
实例。
File(String parent, String child)


根据 parent 路径名字符串和 child 路径名字符串创建一个新
File
实例。
File(URI uri)


通过将给定的
file:
URI 转换为一个抽象路径名来创建一个新的
File
实例。
一:File类的方法详解

File file1 = new File ("C://temp//myNote.txt"); // in Windows 这是windows文件系统下的方法

File file2 = new File ("/tmp/myNote.txt"); // in Linux/Unix unix文件系统的方法

在不同的操作系统中,文件之间的分隔符表示方式不一样的,为了安全起见,我们可以使用File.separator来表示分隔符

最安全的建立文件的方法:

File myFile = new File("C:" + File.separator + "jdk1.5.0" + File.separator, "File.java");

提醒:File.separator 表示的是文件路径符号。

常用方法介绍:

System.out.println(myFile.getName());//取得文件名称的方法

System.out.println(myFile.getPath());//取得文件路径的方法

System.out.println(myFile.isAbsolute());//判断文件是否完整

System.out.println(myFile.getParent());//取得文件的根目录

System.out.println(myFile.exists());//判断文件是否存在

System.out.println(myFile.isDirectory());//判断是否是目录

System.out.println(myFile.isFile());//判断是否是文件

System.out.println(myFile.isHidden());//判断是否是隐藏文件

System.out.println(myFile.canRead());//判断是否可读

System.out.println(myFile.canWrite());//判断是否可写

File myFile_C=new File("d:/test.txt");

System.out.println(new Date(myFile_C.lastModified()));//最后一次编辑时间

myFile_C.renameTo(new File("c:/text.txt.bak"));//重新命名此抽象路径名表示的文件。

myFile_C.setReadOnly();//设置为只读

二:File类的实例应用

1. 创建文件和目录

编写代码创建一个目录E:\test,下面含有两个文件1.txt,2.txt 和一个目录dir,dir目录下有两个文件3.txt和4.txt

[java] view plain copy

<span style="font-family:SimSun;font-size:18px;"> public static void createDirectory(){
System.out.println("**********************");
File f=new File("E:"+File.separator+"test"); //File.separator为文件分隔符,在windows下为\
System.out.println("create directory...");
f.mkdir(); //创建目录
File file1=new File(f,"1.txt"); //在目录test下创建两个文件
File file2=new File(f,"2.txt");
try {
file1.createNewFile();
file2.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //创建文件

File f2=new File(f,"dir"); //在目录test下创建目录dir
f2.mkdir();
File file3=new File(f2,"3.txt"); //创建文件
File file4=new File(f2,"4.txt");
try {
file3.createNewFile();
file4.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//测试创建的File对象:是文件还是文件夹
System.out.println("f is file? " +f.isFile()); //false
System.out.println("f is directory? "+ f.isDirectory()); //true
System.out.println("file1 is file? " +file1.isFile()); //true
System.out.println("file2 is file? " +file1.isFile()); //true
System.out.println("f2 is file? " +f.isFile()); //false
System.out.println("f2 is directory? "+ f.isDirectory()); //true
System.out.println("file3 is file? " +file1.isFile()); //true
System.out.println("file3 is file? " +file1.isFile()); //true
}</span>

2. 列出目录下所有的文件名

编写一个程序,在命令行中以树状结构展示特定的文件夹及其子文件(夹)。(使用递归来实现)

[java] view plain copy

public class FileTree {
public static void main(String[] args) {
//找一个自己硬盘上有用的文件夹
File f = new File("e:/test");
printFile(f, 0);
}
//树状结构打印
static void printFile(File file,int level){
for (int i = 0; i < level; i++) {
System.out.print("-");
}
System.out.println(file.getName());

if(file.isDirectory()){
File[] files = file.listFiles();
for (File temp : files) {
printFile(temp, level+1);
}
}
}
}

显示结果:

test

-1.txt

-2.txt

-dir

--3.txt

--4.txt

3. 列出目录下所有的文件路径

编写一个程序,在命令行中以树状结构展示特定的文件夹及其子文件(夹)的路径。(使用递归来实现)

[java] view plain copy

public class FileTree {
public static void main(String[] args) {
//找一个自己硬盘上有用的文件夹
File f = new File("e:/test");
printFilePath(f, 0);
}

static void printFilePath(File file,int level){
for (int i = 0; i < level; i++) {
System.out.print("-");
}
System.out.println(file.getPath());

if(file.isDirectory()){
File[] files = file.listFiles();
for (File temp : files) {
printFilePath(temp, level+1);
}
}
}
}

显示结果:

e:\test

-e:\test\1.txt

-e:\test\2.txt

-e:\test\dir

--e:\test\dir\3.txt

--e:\test\dir\4.txt

4. 删除一个文件(包含文件里的目录)

[java] view plain copy

<span style="font-family:SimSun;font-size:18px;">public class FileDeleteAllFile {
public static void main(String[] args) {
//找一个自己硬盘上有用的文件夹
File f = new File("e:/test");
deleteAll(f);

}

public static void deleteAll(File file){
if(!file.exists())
return ;

//为文件或者目录为空
if(file.isFile()||file.list().length==0){
file.delete();
return;
}else{
File[] files=file.listFiles();
for(File f:files){
deleteAll(f);
}
file.delete();
}

}
}</span>

//第二部分

import java.io.File;
import java.io.IOException;

public class TestFile {

public void createFile(String path){
File file=new File(path);
if(!file.exists()){//判断文件是否存在
try {
file.createNewFile(); //创建文件

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*获取文件名*/
String name=file.getName();
/*获取文件路径*/
String path_=file.getPath();
/*获取绝对路径名*/
String absPath=file.getAbsolutePath();
/*获取父亲文件路径*/
String parent=file.getParent();
/*文件大小*/
long size=file.length();
/*最后一次修改时间*/
long time=file.lastModified();
System.out.println("文件名:"+name);
System.out.println("文件路径:"+path_);
System.out.println("文件的绝对路径:"+absPath);
System.out.println("文件的父文件路径:"+parent);
System.out.println("文件的大小:"+size);
System.out.println("文件最后一次修改时间:"+time);
//file.delete(); //删除文件

}

public void createDir(String path){
File file=new File(path);
if(!file.exists()){
file.mkdirs(); //创建文件夹
}

//file.delete(); 若文件夹为空,则删除文件夹

}

/**
* 遍历文件夹中的文件并显示
*/
public void fileTest(String path){
File file=new File(path);
File[] files=file.listFiles();
//System.out.println(files.length);

for (File f : files) {
if(f.isFile()){
System.out.println(f.getName()+"是文件!");
}else if(f.isDirectory()){
fileTest(f.getPath());
}
}

}

public void reFileName(String fromPath,String toPath){
File file1=new File(fromPath);
File file2=new File(toPath);
/*判断file2文件夹路径存在与否,不存在则创建*/
if(!file2.exists()){
new File(file2.getParent()).mkdirs();
}
file1.renameTo(file2); //修改文件名
}

public static void main(String[] args) {
// File file=new File("E:\\myjava\\1.txt"); // Window路径\\
// File flie_=new File("E:/myjava","1.txt"); //linux路径 /
//
TestFile tf=new TestFile();
//tf.createFile("E:\\myjava\\1.txt");
//tf.fileTest("E:/wepull");
//tf.createDir("e:/sunxiao/abc/1.txt");
//tf.reFileName("E:\\my\\2.txt","E:\\myjava\\1.txt");
tf.copyFlie("E:\\myjava","F:\\");
}

private void copyFlie(String src, String to) {
File file1=new File(src);
String topath=to+"\\"+file1.getName();
File file2=new File(topath);
if(!file2.exists()){
file2.mkdirs();
}
System.out.println(topath);
File[] file=file1.listFiles();
for (File f : file) {
if(f.isFile()){
String path2=topath+"\\"+f.getName();
Creatfile(path2);
}else if(f.isDirectory()){
String s=f.getPath();
copyFlie(s,topath);
}
}

}

private void Creatfile(String path2) {
File file3=new File(path2);
if(!file3.exists()){//判断文件是否存在
try {
file3.createNewFile(); //创建文件

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

//第三部分

由于一直在使用Java file功能,但是总是很混乱,今天将Java File的所有功能做一个总结。

Java文件操作我个人认为重要的问题有:

a:如何跨平台问题

b:文件编码问题,尤其是多语言平台情况下如何正常工作。

c:文件读写效率、操作效率

d:文件加密和文件安全

e:文件快速检索,强烈建议使用lence进行文件检索及文件管理。

以下是本人做的一些整理:

一:建立文件

File file1 = new File ("C://temp//myNote.txt"); // in Windows 这是windows文件系统下的方法

File file2 = new File ("/tmp/myNote.txt"); // in Linux/Unix unix文件系统的方法

最安全的建立文件的方法:

File myFile = new File("C:" + File.separator + "jdk1.5.0" + File.separator, "File.java");

File.separator 是文件路径符号。

System.out.println(myFile.getName());//取得文件名称的方法

System.out.println(myFile.getPath());//取得文件路径的方法

System.out.println(myFile.isAbsolute());//判断文件是否完整

System.out.println(myFile.getParent());//取得文件的根目录

System.out.println(myFile.exists());//判断文件是否存在

System.out.println(myFile.isDirectory());//判断是否是目录

System.out.println(myFile.isFile());//判断是否是文件

System.out.println(myFile.isHidden());//判断是否是隐藏文件

System.out.println(myFile.canRead());//判断是否可读

System.out.println(myFile.canWrite());//判断是否可写

File myFile_A = new File("C:" + File.separator);

for(String s: myFile_A.list()){//读取某个目录下所有文件

System.out.println(s);

}

File myFile_C=new File("d:/test.txt");

System.out.println(new Date(myFile_C.lastModified()));//最后一次编辑时间

myFile_C.renameTo(new File("c:/text.txt.bak"));//从命名

myFile_C.setReadOnly();//设置为只读

二:文件过滤方法

java提供了很好的文件过滤借口:FilenameFilter 过滤以后的文件可以用listFiles显示出来。效率还是非常高的。

import java.io.File;

import java.io.FilenameFilter;

import java.util.Date;

/**

* 文件过滤器过滤类

* @author fb

*/

class FileListFilter implements FilenameFilter {

private String name;

private String extension;

public FileListFilter(String name, String extension) {

this.name = name;

this.extension = extension;

}

public boolean accept(File directory, String filename) {

boolean fileOK = true;

if (name != null) {

fileOK = filename.startsWith(name);

}

if (extension != null) {

fileOK = filename.endsWith('.' + extension);

}

return fileOK;

}

}

测试方法:

import java.io.File;

import java.io.FilenameFilter;

import java.util.Date;

/**

* 文件过滤器 运行函数

* @author fb

*/

public class Run_FileListFilter {

public static void main(String[] args) {

File myDir = new File("d:/");

FilenameFilter select = new FileListFilter("F", "txt");

File[] contents = myDir.listFiles(select);

for (File file : contents) {

System.out.println(file + " is a " + (file.isDirectory() ? "directory" : "file")

+ " last modified on/n" + new Date(file.lastModified()));

}

}

}

三:建立目录、文件、临时文件、删除文件或目录

import java.io.File;

import java.io.IOException;

public class MakeDir {

public static void main(String[] args) {

File myFile=new File("D:/myFubin/");

if(myFile.mkdir()){//单级目录

System.out.println("建立目录成功");

}else{

System.out.println("建立目录失败");

}

File myFile_A=new File("D:/myFubin/test/");

if(myFile_A.mkdirs()){//多级目录

System.out.println("建立目录成功");

}else{

System.out.println("建立目录失败");

}

File file = new File("d://myFubin//test.txt");

try {

file.createNewFile();//建立空文件

} catch (IOException e) {

e.printStackTrace();

}

System.out.println(file.canRead());

if(file.delete()){//删除文件或删除目录

//删除文件的另外一个方法:file.deleteOnExit() 这种方法是在程序退出的时候将文件删除

System.out.println("删除成功");

}else{

System.out.println("删除失败");

}

try {

File tmp = File.createTempFile("foo", "tmp");//建立临时文件

System.out.println("刚才建立的临时文件在:" + tmp.getCanonicalPath());

} catch (IOException e) {

e.printStackTrace();

}

}

}

import java.io.File;

/**

* @author fb www.cujava.com

* 文件操作里Java 1.6 新功能:查询磁盘空间

*/

public class SpaceChecker {

public static void main(String[] args) {

File[] roots = File.listRoots();//取得所有的根,如果是windows系统那么将取得所有的磁盘

for (int i = 0; i < roots.length; i++) {

System.out.println(roots[i]);

System.out.println("Free space = " + roots[i].getFreeSpace());

System.out.println("Usable space = " + roots[i].getUsableSpace());

System.out.println("Total space = " + roots[i].getTotalSpace());

System.out.println();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: