File 类小结

File 类小结
File类
一:
File类的对象主要用来获取文件本身的一些信息,例如文件所在的目录,文件的长度,文件读写权限等,不涉及对文件的读写操作.创建一个File对象的构造方法有3个:
File(FilefileStringfilename);
File(Stringfilename);
File(StringdirectoryPate);
使用File(Stringfilename)创建文件时,该文h)//构造方法
File(StringdirectoryPath,Stringfilenam)

System.out.println("请输入您要查询的目录");
Strings=reader.nextline();
System.out.println("请输入您要查询文件的名字");
Stringm=reader.nextline();
Filefile=newFile(s,m);

经常使用File类的下列方法获取文件本身的一些信息
publicbooleanexixts()判断文件是否存在.
publicStringgetName()获取文件的名字.
publicbooleancanRead()判断文件是否是可读的.
publicbooleancanWrite()判断文件是否可被写入.

publiclonglength()获取文件的长度(单位是字节).
publicStringgetAbsolutePath()获取文件的绝对路径.
publicStringgetParent()获取文件的父目录.
publicbooleanisFile()判断文件是否是一个正常文件,而不是目录.
publicbooleanisDirectroy()判断文件是否是一个目录.
publicbooleanisHidden()判断文件是否是隐藏文件.
publiclonglastModified()获取文件最后修改的时间时间是从1970年午夜至文件最后修改时刻的毫秒数.


二:
1)创建目录
publicbooleanmkdir()
创建一个目录,如果创建成功返回true,否则返回false(如果该目录已经存在将返回false).
创建目录,必须有File的对象
Filefile=newFile("f:\\300\\1.java");
booleana=file.mkdir();
if(a==true){
System.out.println("创建成功");
}
else
{
System.out.println("失败");
}

2)列出目录中的文件
如果File对象是一个目录,那么该对象可以调用下述方法列出该目录下的文件和子目录
publicString[]list()用字符串形式返回目录下的全部文件,
publicFile[]listFiles()用File对象形式返回目录下的全部文件.

Filefile=newFile("目录");
1.StringfileName[]=file.list[file.length()];
2.FilefileName[]=file.listFiles();
然后用数组循环输出

列出目录下指定类型的文件:
publicString[]list(FilenameFilterobj)
该方法用字符串形式返回目录下的指定类型的所有文件.
publicFile[]listFiles(FilenameFilterobj)

该方法用File对象返回目录下的指定类型所有文件.
FilenameFilter是一个接口,该接口有一个方法
publicbooleanaccept(Filedir,Stringname)

当向list方法传递一个实现该接口的对象时,dir调用list方法在列出文件时,将调用accept方法检查该文件name是否符合accept方法指定的目录和文件名字要求.
在下面的例子2中,列出d:\ioio目录下的部分.java文件的名字.

classFileAcceptimplementsFilenameFilter{
Stringstr=null;//定义变量后就给赋值

FileAccept(Strings){
str="."+s;
}
publicbooleanaccept(Filedir,Stringname){
returnname.endsWith(str);
}
}

例子:
System.out.println("====请输入您要查询文件的目录====");
Scannerreader1=newScanner(System.in);

Strings=reader1.nextLine();

System.out.println("====请输入文件的类型====");

Scannerreader2=newScanner(System.in);

Stringr=reader2.nextLine();

Filedir=newFile(s+":");

FileAcceptacceptCondition=newFileAccept(r);

FilefileName[]=dir.listFiles(acceptCondition);

for(inti=0;i<fileName.length;i++){

System.out.println(fileName.getPath());
}


FileInputStream类
这个是查看和读写文档内容的类上面的File类是文件夹属性
FileInputStream和FileOutStream

例子:
packagefile;

importjava.io.File;
importjava.io.FileInputStream;
importjava.io.IOException;

publicclassSimpleReadFile{
publicstaticvoidmain(String[]aa){
intb=0;
Filef=newFile("E:\\temp\\www.wnetw.net.java");

bytetom[]=newbyte[(int)f.length()];

try{

FileInputStreamreadfile=newFileInputStream(f);

while((b=readfile.read(tom,0,(int)f.length()))!=-1){

Strings=newString(tom,0,b);//把byte类型转换成String

System.out.println(s);

//System.out.println(b);
}
readfile.close();
}
catch(IOExceptione){
System.out.println("文件错误"+e.getMessage());
}
}
}



FileOutStream类型
例子:

importjava.util.*;
importjava.io.*;

publicclassOutStream{

publicstaticvoidmain(Stringargs[]){

try{
System.out.println("请输入您要写入的内容,并存入磁盘");

Strings=reader.nextLine();

bytetom[]=s.getBytes();//把字符串强制转换成byte类型;并传值给了byte

Filefile=newFile("文件目录");

FileOutputStreamwritefile=newFileOutputStream(file);

writefile.write(tom,0,tom.length);

System.out.println("写入成功");

writefile.close();

}
catch(IOExceptione){

System.out.println("Error");
}
}
}


FileReader类和FileWriter类
上面的FileInputStream使用字节读取文件,字节流不能直接操作Unicode字符,所以Java提供了字符流.由于汉字在文件中占用2个字节,如果使用字节流,读取不当会出现乱码现象,采用字符流就可以避免这个现象,因为,在Unicode字符中,一个汉字被看作一个字符.
1.FileReader
packagefile;

importjava.io.File;
importjava.io.FileReader;
importjava.io.IOException;

publicclassSimpleFileReader{
publicstaticvoidmain(Stringaa[]){
intn=0;

try{
Filef=newFile("E:\\temp","www.wnetw.net.java");

FileReaderin=newFileReader(f);

intlength=(int)f.length();

chartom[]=newchar[length];//bytetom[]=newbyte[length]

while((n=in.read(tom,0,length))!=-1){

Strings=newString(tom,0,n);//把字符类型转换成String

System.out.println(s);

}
in.close();
}
catch(IOExceptione){
System.out.println("error:"+e.getMessage());
}
}
} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值