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());
}
}
}