您的位置:首页 > 编程语言 > Java开发

Java中IO流的File类

2016-07-13 08:27 435 查看

File类的常用方法

file类的构造方法

package com.cloud.ioflow;
import java.io.File;
/*
IO流:Input,Output
IO主要解决设备与设备之间的数据传输问题

比如:硬盘-->内存,内存数据-->硬盘,键盘数据-->内存

IO技术的使用场景
导出报表,上传大头照,下载,解释xml文件

数据保存在硬盘上,该数据可以做到永久保存,数据一般以文件的形式保存在硬盘上

File类的构造方法
File(String pathname)
指定文件或者文件夹的路径创建一个File文件
File(File parent,String child)
根据parent抽象路径名和child路径名字符创建一个新的File实例

目录分隔符:
在windows机器上的目录分隔符是 \ ,在linux机器上的目录分隔符是/
注意:
在windows上面\
与 /
都可以使用作为目录分隔符。而且,如果写/
的时候只需要写一个即可。
*/
public
class
Demo1 {
public
static void
main(String[] args) {
File file = new File("F:/a.txt");
// File parentFile = new File("F:\\");
// File file = new File("F:\\","a.txt");
System.out.println("是否存在该目录?"+file.exists());
System.out.println("目录分隔符:"+File.separator);
}
}

路径问题

import java.io.File;

/*
路径问题:

绝对路径:该文件在硬盘上的完整路径。绝对路径一般都是以盘符开头的。
相对路径:
相对路径就是资源文件相对于当前程序所在的路径。

.
当前路径
..
上一级路径

注意:如果程序当前所在的路径与资源文件不是在同一个盘下面,是没法写相对路径的
*/
public
class
Demo2 {
public
static void
main(String[] args) {
File file = new File(".");
System.out.println("当前路径:"+file.getAbsolutePath());
File file2=new File("\\..\\..\\a.txt");
System.out.println("存在该文件?"+file2.exists());
}
}

创建文件

import java.io.File;
import java.io.IOException;
/*
文件的创建
createNewFile()
在指定位置创建一个空文件,成功就返回true,如果已存在就不创建然后返回false
mkdir()
在指定位置创建目录,这只会创建最后一级目录,如果上级目录不存在就抛异常。
mkdirs()
在指定位置创建目录,这会创建路径中所有不存在的目录。
renameTo(File dest)
重命名文件或文件夹,也可以操作非空的文件夹,文件不同时相当于文件的剪切,

剪切时候不能操作非空的文件夹。移动/重命名成功则返回true,失败则返回false。
*/
public
class
Demo3 {
public
static void
main(String[] args)
throws IOException {
File file = new File("F:\\aa");
//createNewFile
创建一个指定的文件,如果该文件存在了,则不会再创建,
//如果还没有存在则创建。创建成功返回true,否则返回false。
System.out.println("是否创建成功?"+file.createNewFile());

File dir = new File("F:\\a.txt");

//
mkdir 创建一个单级文件夹,
System.out.println("是否创建?"+dir.mkdir());

File dirs = new File("F:\\A\\B");
System.out.println("创建多级文件夹"+dirs.mkdirs());

File destFile = new File("F:\\aaaa");
System.out.println("重命名成功?"+file.renameTo(destFile));
}
}

删除文件

package com.cloud.ioflow;
import java.io.File;
/*
删除文件:
delete()
删除文件或者一个空的文件夹,如果文件夹且不为空,则不能删除,成功返回true,失败返回false
deleteOnExit()
在虚拟机终止时,请求删除此抽象路径名表示的文件或者目录,保证程序异常时创建的临时文件可以被删除

判断:
exists()
文件或文件夹是否存在
isFile()
是否是一个文件,如果不存在,则始终为false
isDirectory()
是否是一个目录,如果不存在,则始终是false
isHidden()
是否是一个隐藏的文件,或是否是隐藏的目录
isAbsolute()
测试抽象路径名是否是为绝对路径名
*/
public
class
Demo4 {
public
static void
main(String[] args) {
File
file = new File("F:\\a.txt");
System.out.println("是否删除成功?"+file.delete());

file.deleteOnExit();//一般用于java虚拟机结束的时候删除临时产生的文件
File file2 = new File("..\\..\\a.txt");
System.out.println("file2存在吗?"+file2.exists());
System.out.println("是否是一个文件?"+file2.isFile());
System.out.println("是文件夹?"+file2.isDirectory());
System.out.println("是隐藏文件?"+file2.isHidden());
System.out.println("是绝对路径?"+file2.isAbsolute());
}
}
返回结果:

是否删除成功?false

file2存在吗?false

是否是一个文件?false

是文件夹?false

是隐藏文件?false

是绝对路径?false

获取文件信息

package com.cloud.ioflow;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
获取:
getName()
获取文件或文件夹名称,不包含上级路径
getPath()
返回绝对路径,可以是相对路径,但是目录要指定
getAbsolutePath()
获取文件的绝对路径,与文件是否存在没关系
length()
获取文件的大小(字节数),如果文件不存在则返回OL,如果是文件夹也返回OL
getParent()
返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。
lastModified()
获取最后一次被修改的时间
*/
public
class
Demo5 {
public
static void
main(String[] args) {
File file = new File("..\\..\\a.txt");
System.out.println("--"+file.getName());
System.out.println("--"+file.getPath());
System.out.println(file.getAbsolutePath());
System.out.println(file.length());
System.out.println(file.getParent());
long lastModified = file.lastModified();
Date date = new Date(lastModified);
SimpleDateFormat dateformat =
new
SimpleDateFormat("yyyy年MM月dd日
HH:mm:ss");
System.out.println(dateformat.format(date));
}
}

文件夹操作

package com.cloud.ioflow;
import java.io.File;
/*
文件夹相关:
static File[] listRoots()
列出所有的根目录(Window中就是所有系统的盘符)
list()
返回目录下的文件或者目录名,包含隐藏文件。对于文件这样操作会返回null。
listFiles()
返回目录下的文件或者目录对象(File类实例),包含隐藏文件。对于文件这样操作会返回null。
list(FilenameFilter filter)
返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。
listFiles(FilenameFilter filter)
返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。
*/
public
class
Demo6 {
public
static void
main(String[] args) {
File []
roots = File.listRoots();
/*
* C:\ D:\ E:\ F:\ G:\
*/
for(File file:roots){
System.out.println(file);
}
File file = new File("F:\\whmjar");
String [] fileNames = file.list();
for(String fileName:fileNames){
System.out.println(fileName);
}
System.out.println(">>>>>>>>>>>>>>>>>>");
File [] file2 = file.listFiles();
for(File fileItem:file2){
System.out.println(fileItem.getName());
}
}
}

文件过滤

package com.cloud.ioflow;

import java.io.File;
import java.io.FilenameFilter;

/*
需求1
: 指定一个文件夹,然后该文件夹下面所有java文件。
需求2:指定一个文件夹,然后列出文件夹下面的所有子文件与文件夹,但是格式要如下:

文件:

文件名1

文件名2

文件名3
..

文件夹:

文件夹名1

文件夹名2

文件夹名3
....

listFiles(FilenameFilter filter)
返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。
list(fileNameFilter filter)
返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。
*/
//自定义一个文件名过滤器
class MyFilter
implements FilenameFilter{
@Override
public
boolean
accept(File dir, String name) {
return name.endsWith(".java");
}

}
public
class
Demo7 {
public
static void
main(String[] args) {
File file = new File("F:\\安卓文件\\MyView1\\src\\com\\cloud\\ioflow");
listJava2(file);
listFile(file);
}
public
static void
listJava2(File dir){
File [] files = dir.listFiles(new MyFilter());
for(File file:files){
System.out.println(file.getName());
}
}
//列出所有java文件
public
static void
listJava(File dir){
File [] files = dir.listFiles();
for(File file:files){
String fileName = file.getName();
if(fileName.matches(".+\\.java")&&file.isFile()){
System.out.println(fileName);
}
}
}
public
static void
listFile(File dir){
File [] files = dir.listFiles();
System.out.println("文件:");
for(File fileItem:files){
if(fileItem.isFile()){
System.out.println("\t"+fileItem.getName());
}
}
System.out.println("文件夹:");
for(File fileItem:files){
if(fileItem.isDirectory()){
System.out.println("\t"+fileItem.getName());
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: