java文件操作全.docx
《java文件操作全.docx》由会员分享,可在线阅读,更多相关《java文件操作全.docx(39页珍藏版)》请在冰豆网上搜索。
![java文件操作全.docx](https://file1.bdocx.com/fileroot1/2023-4/21/73d3457e-2f4b-42d2-8612-e50dfad5c712/73d3457e-2f4b-42d2-8612-e50dfad5c7121.gif)
java文件操作全
File操作(最全的)
1.文件
1.标准文件:
就像图片,音乐文件等。
2.目录文件:
也就是平常所说的文件夹。
3.虚拟内存文件:
系统在运行程序时生成的临时性文件。
2.文件的路径
1.相对路径:
相对于某一文件的路径,形象地说是把两文件的绝对路径相同的部分砍掉,剩下的就是相对路径
如:
A文件是"D:
\MyDocuments\StudySample\src\cn\xmh",
B文件是"D:
\MyDocuments\StudySample\src\netjava\cjl",
则B相对A的路径是"\netjava\cjl";
2.绝度路径:
从磁盘根目录算起的路径名
如:
"G:
\TDDOWNLOAD\数据结构"。
3.File是一个类,位于java.io包中。
我们可以用File类创建文件对象,并对文件对象进行各种操作,如读写数据。
4.File类中的构造器以及各种方法
1.构造器
1.最常用的一种,根据字符串型的路径名创建文件对象
File(Stringpathname)
示例:
Stringpath="D:
\\MyDocuments\\StudySample";
java.io.Filefile=newjava.io.File(path);
2.在一个父目录对象下面创建一个名字为child的文件对象,child为要创建的文件的名字
File(Fileparent,Stringchild)//这里的parent是File类型的,也就是说它是文件对象
File(Stringparent,Stringchild)//这里的parent是String类型的,它代表的是父目录的路径
2.文件对象操作方法
1.exists():
判断File对象指向的文件是否存在,返回一个boolean类型的值,true或者false。
2.isDirectory():
判断File对象指向的文件是否为目录,返回一个boolean类型的值,true或者false。
3.isFile():
判断File对象指向的文件是否是标准文件,返回一个boolean类型的值,true或者false。
4.getName():
获取文件的名字(不带文件的路径),返回的是String类型的值。
5.length():
得到File对象指向文件的长度,以字节计算,返回一个长整形的值(long);
注意:
在系统中,文件夹(目录)的大小为零,也就是不占用空间,使用length()时返回的是0
6.mkdir():
根据File对象的名字(路径)创建一个目录(文件夹),如果是相对目录,则新建的目录在当前目录下
如在工程StudySample中运行
Stringpath="study";
java.io.Filefile=newjava.io.File(path);
file.createNewFile();
这样就会在StudySample目录下创建一个名为"study"的文件夹(目录)。
如果已经存在同名的文件,则抛出异常信息。
7.mkdirs():
如果File对象名字有多级目录,则可以调用该方法一次性创建多级目录。
8.createNewFile():
用来创建标准文件的方法
如下示例:
Stringpath="D:
\\MyDocuments\\StudySample\\test.txt";
java.io.Filefile=newjava.io.File(path);
file.createNewFile();
这样就会在"D:
\MyDocuments\StudySample"目录下创建一个名为"test.txt"的记事本。
9.delete():
调用该方法可以删除File对象所指向的文件。
5.文件的操作实例:
importjava.io.File;
publicclassFileExercise{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args)throwsException{
System.out.println("当前操作系统的名称分隔符是:
"+java.io.File.separator);
System.out.println("当前操作系统的路径分隔符是:
"+java.io.File.pathSeparator);
//字符串类型的文件名
StringfileName="xiong.txt";
//实例化文件对象
java.io.Filefile=newjava.io.File("src",fileName);
java.io.Filefile1=newjava.io.File(
"D:
\\MyDocuments\\StudySample\\src\\xiong");
java.io.Filefile2=newjava.io.File(
"D:
\\MyDocuments\\StudySample\\src");
//创建一个文件
file.createNewFile();
booleanb;//申明一个boolean类型的变量
//测试应用程序是否可以执行该文件
b=file.canExecute();
System.out.println("测试应用程序是否可以执行该文件"+b);
//测试用用程序是否可以读取该文件
b=file.canRead();
System.out.println("测试用用程序是否可以读取该文件"+b);
//测试用用程序是否可以修改该文件
b=file.canWrite();
System.out.println("测试用用程序是否可以修改该文件"+b);
//测试此抽象路径名表示的文件或目录是否存在。
b=file.exists();
System.out.println("测试此抽象路径名表示的文件或目录是否存在"+b);
//按字母顺序比较两个抽象路径名
inti=pareTo(file1);
System.out.println(i);
Stringpath;
//返回此抽象路径名的绝对路径名字符串
path=file.getAbsolutePath();
System.out.println(path);
//返回此抽象路径名的规范路径名字符串
path=file.getCanonicalPath();
System.out.println(path);
longfree;
//返回此抽象路径名指定的分区中未分配的字节数
free=file.getFreeSpace();
System.out.println("此抽象路径名指定的分区中未分配的字节数"+free);
//返回由此抽象路径名表示的文件或目录的名称
Stringname;
name=file.getName();
System.out.println(name);
name=file1.getName();
System.out.println(name);
//返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null
Stringparentpath;
parentpath=file.getParent();
System.out.println(parentpath);
parentpath=file1.getParent();
System.out.println(parentpath);
//返回此抽象路径名指定的分区上可用于此虚拟机的字节数
free=file.getUsableSpace();
System.out.println("此抽象路径名指定的分区上可用于此虚拟机的字节数"+free);
//计算此抽象路径名的哈希码
i=file.hashCode();
System.out.println(i);
//测试此抽象路径名是否为绝对路径名
b=file.isAbsolute();
System.out.println("file对象的抽象路径名是否为绝对路径名:
"+b);
b=file1.isAbsolute();
System.out.println("file1对象的抽象路径名是否为绝对路径名:
"+b);
//返回此抽象路径名表示的文件最后一次被修改的时间
longtime=file.lastModified();
System.out.println(time);
//返回由此抽象路径名表示的文件的长度
longlength=file.length();
System.out.println("文件的长度:
"+length);
//list()-->返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录
String[]array=file2.list();
for(i=0;iSystem.out.println(array[i]);
}
//listFiles()-->返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
java.io.File[]array1=file2.listFiles();
for(i=0;iSystem.out.println(array1[i]);
}
//listRoots()-->列出可用的文件系统根,静态方法
java.io.File[]roots=File.listRoots();
for(i=0;iSystem.out.println(roots[i]);
}
//在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
//file.deleteOnExit();
//创建此抽象路径名指定的目录
file1.mkdir();
//重新命名此抽象路径名表示的文件
java.io.Filefile4=newjava.io.File("src\\重命名文件");
System.out.println(file1.renameTo(file4));
//设置文件只读
file.setReadOnly();
//设置文件可写
file.setWritable(true);
}
}
1.创建文件夹
FilemyFolderPath=newFile(%%1);
try{
if(!
myFolderPath.exists()){
myFolderPath.mkdir();
}
}
catch(Exceptione){
System.out.println("新建目录操作出错");
e.printStackTrace();
}
2.创建文件
FilemyFilePath=newFile(%%1);
try{
if(!
myFilePath.exists()){
myFilePath.createNewFile();
}
FileWriterresultFile=newFileWriter(myFilePath);
PrintWritermyFile=newPrintWriter(resultFile);
myFile.println(%%2);
resultFile.close();
}
catch(Exceptione){
System.out.println("新建文件操作出错");
e.printStackTrace();
}
3.删除文件
FilemyDelFile=newFile(%%1);
try{
myDelFile.delete();
}
catch(Exceptione){
System.out.println("删除文件操作出错");
e.printStackTrace();
}
4.删除文件夹
FiledelFolderPath=newFile(%%1);
try{
delFolderPath.delete();//删除空文件夹
}
catch(Exceptione){
System.out.println("删除文件夹操作出错");
e.printStackTrace();
}
5.删除一个文件下夹所有的文件夹
Filedelfile=newFile(%%1);
File[]files=delfile.listFiles();
for(inti=0;iif(files[i].isDirectory()){
files[i].delete();
}
}
6.清空文件夹
Filedelfilefolder=newFile(%%1);
try{
if(!
delfilefolder.exists()){
delfilefolder.delete();
}
delfilefolder.mkdir();
}
catch(Exceptione){
System.out.println("清空目录操作出错");
e.printStackTrace();
}
7.读取文件
//逐行读取数据
FileReaderfr=newFileReader(%%1);
BufferedReaderbr=newBufferedReader(fr);
String%%2=br.readLine();
while(%%2!
=null){
%%3
%%2=br.readLine();
}
br.close();
fr.close();
8.写入文件
//将数据写入文件
FileWriterfw=newFileWriter(%%1);
fw.write(%%2);
fw.close();
9.写入随机文件
try{
RandomAcessFilelogFile=newRandomAcessFile(%%1,"rw");
longlg=logFile.length();
logFile.seek(%%2);
logFile.writeByte(%%3);
}catch(IOExceptionioe){
System.out.println("无法写入文件:
"+ioe.getMessage());
}
10.读取文件属性
//文件属性的取得
Fileaf=newFile(%%1);
if(af.exists()){
System.out.println(f.getName()+"的属性如下:
文件长度为:
"+f.length());
System.out.println(f.isFile()?
"是文件":
"不是文件");
System.out.println(f.isDirectory()?
"是目录":
"不是目录");
System.out.println(f.canRead()?
"可读取":
"不");
System.out.println(f.canWrite()?
"是隐藏文件":
"");
System.out.println("文件夹的最后修改日期为:
"+newDate(f.lastModified()));
}else{
System.out.println(f.getName()+"的属性如下:
");
System.out.println(f.isFile()?
"是文件":
"不是文件");
System.out.println(f.isDirectory()?
"是目录":
"不是目录");
System.out.println(f.canRead()?
"可读取":
"不");
System.out.println(f.canWrite()?
"是隐藏文件":
"");
System.out.println("文件的最后修改日期为:
"+newDate(f.lastModified()));
}
if(f.canRead()){
%%2
}
if(f.canWrite()){
%%3
}
11.写入属性
Filefilereadonly=newFile(%%1);
try{
booleanb=filereadonly.setReadOnly();
}
catch(Exceptione){
System.out.println("拒绝写访问:
"+e.printStackTrace());
}
12.枚举一个文件夹中的所有文件夹
//importjava.io.*;
//importjava.util.*;
ArrayListfolderList=newArrayList();
folderList.add(%%1);
for(intj=0;jFilefile=newFile(folderList.get(j));
File[]files=file.listFiles();
ArrayListfileList=newArrayList();
for(inti=0;iif(files[i].isDirectory()){
folderList.add(files[i].getPath());
}else{
fileList.add(files[i]);
}
}
for(Filef:
fileList){
%%2=f.toString();
%%3
}
}
13.复制文件夹
//importjava.io.*;
//importjava.util.*;
ArrayListfolderList=newArrayList();
folderList.add(%%1);
ArrayListfolderList2=newArrayList();
folderList2.add(%%2);
for(intj=0;j (newFile(folderList2[j])).mkdirs();//如果文件夹不存在则建立新文件夹
Filefolders=newFile(folderList[j]);
String[]file=folders.list();
Filetemp=null;
try{
for(inti=0;i if(folderList[j].endsWith(File.separator)){
temp=newFile(folderList[j]+"/"+file[i]);
}
else{
temp=newFile(folderList[j]+"/"+File.separator+file[i]);
}
FileInputStreaminput=newFileInputStream(temp);
if(temp.isFile()){
FileInputStreaminput=newFileInputStream(temp);
FileOutputStreamoutput=newFileOutputStream(folderList2[j]+"/"+
(temp.getName()).toString());
byte[]b=newbyte[5120];
intlen;
while((len=input.read(b))!
=-1){
output.write(b,0,len);
}
output.flush();
output.close();
input.close();
}
if(temp.isDirectory()){//如果是子文件夹
folderList.add(folderList[j]+"/"+file[i]);
folderList2.add(folderList2[j]+"/"+file[i]);
}
}
}
catch(Exceptione){