java文件操作详解.docx
- 文档编号:23694607
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:20
- 大小:18.51KB
java文件操作详解.docx
《java文件操作详解.docx》由会员分享,可在线阅读,更多相关《java文件操作详解.docx(20页珍藏版)》请在冰豆网上搜索。
java文件操作详解
JAVA文件操作详解
输入输出流
在Java中,我们把能够读取一个字节序列的对象称作一个输入流;而我们把够写一个字节序列称作一个输出流。
它们分别由抽象类
InputStream和OutputStream类表示。
因为面向字节的流不方便用来处理存储为Unicode(每个字符使用两个字节)的信息。
所以Java
引入了用来处理Unicode字符的类层次,这些类派生自抽象类Reader和Writer,它们用于读写双字节的Unicode字符,而不是单字节字符。
Java.io包简介
JDK标准帮助文档是这样解释Java.io包的,通过数据流、序列和文件系统为系统提供输入输出。
InputStream类和OutputStream类
InputStream类是所有输入数据流的父类,它是一个抽象类,定义了所有输入数据流都具有的共通特性。
java.io.InputStream的方法如下:
publicabstractread()throwsIOException
读取一个字节并返回该字节,如果到输入源的末则返回-1。
一个具体的输入流类需要重载此方法,以提供有用的功能。
例如:
在FileInputStream类中,该方法从一个文件读取一个字节。
publicintread(byte[]b)throwsIOException
把数据读入到一个字节数据中,并返回实际读取的字节数目。
如果遇到流末则返回-1,该方法最多读取b.length个字节。
publicabstractintread(byte[]b,intoff,intlen)throwsIOException
把数据读入到一个字节数组中并返回实际读取的字节数目。
如果遇到流的末尾则的返回-1。
其中参数off表示第一个字节在b中的位置,len表示读取的最大字节数。
publiclongskip(longn)throwsIOException
略过N个字节不读取,会返回实际略过的字节数目。
因为数据流中剩下的数据可能不到N个字节那么多,所以此时返回值会小于N。
publicintavailable()throwsIOException
read方法(包括后面要讲的OutputStream类的Write方法)都能够阴塞一个线程,直到字节被实际读取或写入。
这意味着如果一个流不能立即被读或被写
/*
*Createdon2005-3-10
*Tochangethetemplateforthisgeneratedfilegoto
*Window>Preferences>Java>CodeGeneration>CodeandComments
*/
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.io.FileInputStream;;
/**
*@authorzhangqinglin
*Tochangethetemplateforthisgeneratedtypecommentgoto
*Window>Preferences>Java>CodeGeneration>CodeandComments
*/
publicclassFiles
{
publicstaticvoidmain(String[]args)throwsIOException
{
Filesf=newFiles();
//System.out.println(f.readFile("f:
\\LinkFile.java"));
f.fileIsNull("D:
\\java\\","ejb");
//f.readLineFile("D:
\\java\\","TestFile.txt");
//System.out.println(f.fileIsNull("f:
\\","122.txt"));
//f.readFolderByFile("F:
\\Login");//不区分大小写
//System.out.println(f.createAndDeleteFolder("ss","f:
\\"));
//System.out.println(f.createAndDeleteFile("f:
\\ss\\","TestFile.dat"));
//f.createAndDeleteFolder("1","D:
\\java\\");
String[]ss=newString[50];//定义对象数组
for(inti=0;i { ss="信息技术和互联网(计算机软硬件,通讯)"+i; } f.writeFile("D: \\java\\","TestFile.txt",ss); } /** *文件的写入 *@paramfilePath(文件路径) *@paramfileName(文件名) *@paramargs[] *@throwsIOException */ publicvoidwriteFile(StringfilePath,StringfileName,String[]args)throwsIOException { FileWriterfw=newFileWriter(filePath+fileName); PrintWriterout=newPrintWriter(fw); for(inti=0;i { out.write(args); out.println(); //out.flush(); } System.out.println("写入成功! "); fw.close(); out.close(); } /** *文件的写入 *@paramfilePath(文件路径) *@paramfileName(文件名) *@paramargs *@throwsIOException */ publicvoidwriteFile(StringfilePath,StringfileName,Stringargs)throwsIOException { FileWriterfw=newFileWriter(filePath+fileName); fw.write(args); fw.close(); } /** *创建与删除文件 *@paramfilePath *@paramfileName *@return创建成功返回true *@throwsIOException */ publicbooleancreateAndDeleteFile(StringfilePath,StringfileName)throwsIOException { booleanresult=false; Filefile=newFile(filePath,fileName); if(file.exists()){ if(file.isFile()) { file.delete(); result=true; System.out.println("文件已经删除! "); } else { System.out.println("对不起,该路径为目录! "); } } else { file.createNewFile();//jdk5.0的新方法 result=true; System.out.println("文件已经创建! "); } returnresult; } /** *创建和删除目录 *@paramfolderName *@paramfilePath *@return删除成功返回true */ publicbooleancreateAndDeleteFolder(StringfolderName,StringfilePath) { booleanresult=false; try { Filefile=newFile(filePath+folderName); if(file.exists()) { if(file.isDirectory()){ file.delete(); System.out.println("目录已经存在,已删除! "); result=true; } else{ System.out.println("对不起,该路径为文件! "); } } else { file.mkdir(); System.out.println("目录不存在,已经建立! "); result=true; } } catch(Exceptionex) { result=false; System.out.println("CreateAndDeleteFolderiserror: "+ex); } returnresult; } /** *输出目录中的所有文件及目录名字 *@paramfilePath */ publicvoidreadFolderByFile(StringfilePath) { Filefile=newFile(filePath); File[]tempFile=file.listFiles(); for(inti=0;i { if(tempFile.isFile()) { System.out.println("File: "+tempFile.getName()); } if(tempFile.isDirectory()) { System.out.println("Directory: "+tempFile.getName()); } } } /** *检查文件中是否为一个空 *@paramfilePath *@paramfileName *@return为空返回true *@throwsIOException */ publicbooleanfileIsNull(StringfilePath,StringfileName)throwsIOException { booleanresult=false; FileReaderfr=newFileReader(filePath+fileName); if(fr.read()==-1) { result=true; System.out.println(fileName+"文件中没有数据! "); } else { System.out.println(fileName+"文件中有数据! "); } fr.close(); returnresult; } /** *读取文件中的所有内容 *@paramfilePath *@paramfileName *@throwsIOException */ publicvoidreadAllFile(StringfilePath,StringfileName)throwsIOException { FileReaderfr=newFileReader(filePath+fileName); //PrintWriterpr=newPrintWriter(fr); //pr.print intcount=fr.read(); while(count! =-1) { System.out.print((char)count); count=fr.read(); //System.out.println(); if(count==13) { fr.skip (1); System.out.print("跳过! "); } } System.out.println(); fr.close(); } /** *一行一行的读取文件中的数据 *@paramfilePath *@paramfileName *@throwsIOException */ publicvoidreadLineFile(StringfilePath,StringfileName)throwsIOException { FileReaderfr=newFileReader(filePath+fileName); BufferedReaderbr=newBufferedReader(fr); Stringline=br.readLine(); while(line! =null) { System.out.println(line); line=br.readLine(); } br.close(); fr.close(); } } /***************************以下是常用的文件操作方法******************************/ /** *@see新建目录 *@paramfolderPathString如c: /fqf *@returnboolean */ publicvoidnewFolder(StringfolderPath) { try{ StringfilePath=folderPath; filePath=filePath.toString(); java.io.FilemyFilePath=newjava.io.File(filePath); if(! myFilePath.exists()) { myFilePath.mkdir(); } } catch(Exceptione) { System.out.println("新建目录操作出错"); e.printStackTrace(); } } /** *@see新建文件 *@paramfilePathAndNameString文件路径及名称如c: /fqf.txt *@paramfileContentString文件内容 *@returnboolean */ publicvoidnewFile(StringfilePathAndName,StringfileContent){ try{ StringfilePath=filePathAndName; filePath=filePath.toString(); FilemyFilePath=newFile(filePath); if(! myFilePath.exists()){ myFilePath.createNewFile(); } FileWriterresultFile=newFileWriter(myFilePath); PrintWritermyFile=newPrintWriter(resultFile); StringstrContent=fileContent; myFile.println(strContent); resultFile.close(); } catch(Exceptione){ System.out.println("新建文件操作出错"); e.printStackTrace(); } } /** *@see删除文件 *@paramfilePathAndNameString文件路径及名称如c: /fqf.txt *@paramfileContentString *@returnboolean */ publicvoiddelFile(StringfilePathAndName){ try{ StringfilePath=filePathAndName; filePath=filePath.toString(); java.io.FilemyDelFile=newjava.io.File(filePath); myDelFile.delete(); System.out.println(myDelFile+"\\文件存在,已删除。 "); } catch(Exceptione){ System.out.println("删除文件操作出错"); e.printStackTrace(); } } /** *@see删除文件夹 *@paramfilePathAndNameString文件夹路径及名称如c: /fqf *@paramfileContentString *@returnboolean */ publicvoiddelFolder(StringfolderPath){ try{ delAllFile(folderPath);//删除完里面所有内容 StringfilePath=folderPath; filePath=filePath.toString(); java.io.FilemyFilePath=newjava.io.File(filePath); myFilePath.delete();//删除空文件夹 } catch(Exceptione){ System.out.println("删除文件夹操作出错"); e.printStackTrace(); } } /** *@see删除文件夹里面的所有文件 *@parampathString文件夹路径如c: /fqf */ publicvoiddelAllFile(Stringpath){ Filefile=newFile(path); if(! file.exists()){ return; } if(! file.isDirectory()){ return; } String[]tempList=file.list(); Filetemp=null; for(inti=0;i if(path.endsWith(File.separator)){ temp=newFile(path+tempList[i]); } else{ temp=newFile(path+File.separator+tempList[i]); } if(temp.isFile()){ temp.delete(); } if(temp.isDirectory()){ delAllFile(path+"/"+tempList[i]);//先删除文件夹里面的文件 delFolder(path+"/"+tempList[i]);//再删除空文件夹 } } } /** *@see复制单个文件 *@paramoldPathString原文件路径如: c: /fqf.txt *@paramnewPathString复制后路径如: f: /fqf.txt *@returnboolean */ publicvoidcopyFile(StringoldPath,StringnewPath){ try{ intbytesum=0; intbyteread=0; Fileoldfile=newFile(oldPath); if(oldfile.exists()){//文件存在时 InputStreaminStream=newFileInputStream(oldPath);//读入原文件 FileOutputStreamfs=newFileOutputStream(newPath); byte[]buffer=newbyte[1444]; //intlength=0; while((byteread=inStream.read(buffer))! =-1){ bytesum+=byteread;//字节数文件大小 System.out.println(bytesum); fs.write(buffer,0,byteread); } inStream.close(); } } catch(Exceptione){ System.out.println("复制单个文件操作出错"); e.printStackTrace(); } } /** *@see复制整个文件夹内容 *@paramoldPathString原文件路径如: c: /fqf *@paramnewPathString复制后路径如: f: /fqf/ff *@returnboolean */ publicvoidcopyFolder(StringoldPath,StringnewPath){ try{ (newFile(newPath)).mkdirs();//如果文件夹不存在则建立新
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 文件 操作 详解
![提示](https://static.bdocx.com/images/bang_tan.gif)