Java.io.File类主要是完成了文件夹管理的命名、查询文件属性和处理目录等到操作它不进行文件夹内容的读取操作。以下描述了File类的主要常用方法。
File():构造函数,一般是依据文件所在的指定位置来创建文件对象。
CanWrite():返回文件是否可写。
CanRead():返回文件是否可读。
CompareTo(File pathname):检查指定文件路径间的顺序。
CreateNewFile():当文件不存在时生成空文件。
Delet():从文件系统内删除该文件。
DeleteOnExit():程序顺利结束时从系统中删除文件。
Equals(Object obj):检查特定对象的路径名是否相等。
Exists():判断文件夹是否存在。
GetAbsoluteFile():返回文件的完整路径。
GetAbsolutePath():返回文件的完整路径。
GetName():返回文件名称。 GetParent():返回文件父目录路径。
GetPath():返回文件的潜在相对路径。
GetParentFile():返回文件所在文件夹的路径。
HashCode():返回文件哈希码。
IsDirectory():判断该路径表示的是否为目录。
IsFile():判断该路径指示的是否是文件。
LastModified() :返回文件的最后修改时间标志。
Length():返回文件长度。
List():返回文件和目录清单。
Mkdir():生成指定的目录。
RenameTo(File dest):更名文件。
SetReadOnly():将文件设置为只读。
ToString():返回文件状态的字符串。
ToURL():将文件的路径字符串转换成URL。
java demo
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; /** * @author zhangqinglin * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class Files { public static void main(String[] args) throws IOException { Files f = new Files(); // System.out.println(f.readFile("f:\\LinkFile.java")); // f.readAllFile("f:\\","LinkFile.java"); // f.readLineFile("f:\\","LinkFile.java"); // System.out.println(f.fileIsNull("f:\\","122.txt")); // f.readFolderByFile("F:\\PDF"); // System.out.println(f.createAndDeleteFolder("ss","f:\\")); // System.out.println(f.createAndDeleteFile("f:\\ss\\","TestFile.dat")); String[] ss = new String[50]; for(int i=0;i<ss.length;i++) { ss[i] = "信息技术和互联网(计算机软硬件,通讯) "+i; } f.writeFile("f:\\ss\\","TestFile.txt",ss); } /** * 文件的写入 * @param filePath(文件路径) * @param fileName(文件名) * @param args[] * @throws IOException */ public void writeFile(String filePath,String fileName,String[] args) throws IOException { FileWriter fw = new FileWriter(filePath+fileName); PrintWriter out=new PrintWriter(fw); for(int i=0;i<args.length;i++) { out.write(args[i]); out.println(); out.flush(); } fw.close(); out.close(); } /** * 文件的写入 * @param filePath(文件路径) * @param fileName(文件名) * @param args * @throws IOException */ public void writeFile(String filePath,String fileName,String args) throws IOException { FileWriter fw = new FileWriter(filePath+fileName); fw.write(args); fw.close(); } /** * 创建与删除文件 * @param filePath * @param fileName * @return 创建成功返回true * @throws IOException */ public boolean createAndDeleteFile(String filePath,String fileName) throws IOException { boolean result = false; File file = new File(filePath,fileName); if(file.exists()) { file.delete(); result = true; System.out.println("文件已经删除!"); } else { file.createNewFile(); result = true; System.out.println("文件已经创建!"); } return result; } /** * 创建和删除目录 * @param folderName * @param filePath * @return 删除成功返回true */ public boolean createAndDeleteFolder(String folderName,String filePath) { boolean result = false; try { File file = new File(filePath+folderName); if(file.exists()) { file.delete(); System.out.println("目录已经存在,已删除!"); result = true; } else { file.mkdir(); System.out.println("目录不存在,已经建立!"); result = true; } } catch(Exception ex) { result = false; System.out.println("CreateAndDeleteFolder is error:"+ex); } return result; } /** * 输出目录中的所有文件及目录名字 * @param filePath */ public void readFolderByFile(String filePath) { File file = new File(filePath); File[] tempFile = file.listFiles(); for(int i = 0;i<tempFile.length;i++) { if(tempFile[i].isFile()) { System.out.println("File : "+tempFile[i].getName()); } if(tempFile[i].isDirectory()) { System.out.println("Directory : "+tempFile[i].getName()); } } } /** * 检查文件中是否为一个空 * @param filePath * @param fileName * @return 为空返回true * @throws IOException */ public boolean fileIsNull(String filePath,String fileName) throws IOException { boolean result = false; FileReader fr = new FileReader(filePath+fileName); if(fr.read() == -1) { result = true; System.out.println(fileName+" 文件中没有数据!"); } else { System.out.println(fileName+" 文件中有数据!"); } fr.close(); return result; } /** * 读取文件中的所有内容 * @param filePath * @param fileName * @throws IOException */ public void readAllFile(String filePath,String fileName) throws IOException { FileReader fr = new FileReader(filePath+fileName); int count = fr.read(); while(count != -1) { System.out.print((char)count); count = fr.read(); if(count == 13) { fr.skip(1); } } fr.close(); } /** * 一行一行的读取文件中的数据 * @param filePath * @param fileName * @throws IOException */ public void readLineFile(String filePath,String fileName) throws IOException { FileReader fr = new FileReader(filePath+fileName); BufferedReader br = new BufferedReader(fr); String line = br.readLine(); while(line != null) { System.out.println(line); line = br.readLine(); } br.close(); fr.close(); } }
jsp demo
一行一行读取数据
<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.io.*"%> <html> <head> <title>文件读取</title> </head> <body> <% String path=request.getRealPath("");//取得当前目录的路径 FileReader fr=new FileReader(path + "\\file\\inc\\t.txt");//建立FileReader对象,并实例化为fr BufferedReader br=new BufferedReader(fr);//建立BufferedReader对象,并实例化为br String Line=br.readLine();//从文件读取一行字符串 //判断读取到的字符串是否不为空 while(Line!=null){ out.println(Line + "<br>");//输出从文件中读取的数据 Line=br.readLine();//从文件中继续读取一行数据 } br.close();//关闭BufferedReader对象 fr.close();//关闭文件 %> </body> </html>
略过文件中的字符不读取
<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.io.*"%> <html> <head> <title>略过字节不读取</title> </head> <body> <% String path=request.getRealPath("."); FileReader fr=new FileReader(path + "\\ReadData.txt"); fr.skip(2);//跳过2个字节 int c=fr.read();//读取一个字节 while(c!=-1){ out.print((char)c); c=fr.read(); } fr.close(); %> </body> </html>
将数据写入文件
<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.io.*"%> <html> <head> <title>将数据写入文件</title> </head> <body> <% String path=request.getRealPath("."); FileWriter fw=new FileWriter(path + "\\WriteData.txt");//建立FileWriter对象,并实例化fw //将字符串写入文件 fw.write("大家好!"); fw.write("本书是《JSP编程技巧》"); fw.write("请多多指教!"); fw.write("email:[email protected]"); fw.close(); FileReader fr=new FileReader(path + "\\WriteData.txt"); BufferedReader br=new BufferedReader(fr);//建立BufferedReader对象,并实例化为br String Line=br.readLine(); //读取一行数据 out.println(Line + "<br>"); br.close();//关闭BufferedReader对象 fr.close(); %> </body> </html>
将写入文件的数据分行
<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.io.*"%> <html> <head> <title>将写入文件的数据分行</title> </head> <body> <% String path=request.getRealPath("."); FileWriter fw=new FileWriter(path + "\\WriteData.txt"); BufferedWriter bw=new BufferedWriter(fw); bw.write("大家好!"); bw.write("本书是《JSP编程技巧》。"); bw.newLine();//断行 bw.write("请多多指教!"); bw.newLine();//断行 bw.write("email: [email protected]"); bw.flush();//将数据更新至文件 fw.close();//关闭文件流 out.println("写入文件内容为:<br>"); FileReader fr=new FileReader(path + "\\WriteData.txt"); BufferedReader br=new BufferedReader(fr); String Line=br.readLine();//读取一行数据 while(Line!=null){ out.println(Line + "<br>"); Line=br.readLine(); } fr.close(); %> </body> </html> 如何将数据追加写入到文件 <%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.io.*"%> <html> <head> <title>将写入文件的数据分行</title> </head> <body> <% String path=request.getRealPath("."); RandomAccessFile rf=new RandomAccessFile(path + "\\WriteData.txt","rw");//定义一个类RandomAccessFile的对象,并实例化 rf.seek(rf.length());//将指针移动到文件末尾 rf.writeBytes("\nAppend a line to the file!"); rf.close();//关闭文件流 out.println("写入文件内容为:<br>"); FileReader fr=new FileReader(path + "\\WriteData.txt"); BufferedReader br=new BufferedReader(fr);//读取文件的BufferedRead对象 String Line=br.readLine(); while(Line!=null){ out.println(Line + "<br>"); Line=br.readLine(); } fr.close();//关闭文件 %> </body> </html>
文件的建立/检查与删除
<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.io.*"%> <html> <head> <title>文件的建立、检查与删除</title> </head> <body> <% String path=request.getRealPath(""); //out.println(path); File f=new File(path,"File.txt"); //out.println(f); //out.println(f.exists()); if(f.exists()){//检查File.txt是否存在 f.delete();//删除File.txt文件 out.println(path + "\\File.txt 存在,已删除。"); }else{ f.createNewFile();//在当前目录下建立一个名为File.txt的文件 out.println(path + "\\File.txt 不存在,已建立。");//输出目前所在的目录路径 } %>
目录的建立/检查与删除
<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.io.*"%> <html> <head> <title>目录的建立/检查与删除</title> </head> <body> <% String path=request.getRealPath(""); path=path + "\\Sub";//将要建立的目录路径 File d=new File(path);//建立代表Sub目录的File对象,并得到它的一个引用 if(d.exists()){//检查Sub目录是否存在 d.delete(); out.println("Sub目录存在,已删除"); }else{ d.mkdir();//建立Sub目录 out.println("Sub目录不存在,已建立"); } %> </body> </html>
如何在JSP中处理虚拟目录
<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.io.*"%> <html> <head> <title>JSP中如何处理虚拟目录</title> </head> <body> 取得虚拟目录对应的磁盘路径<br> Web站点主目录的位置为<font color=#ff0000><%=request.getRealPath("/")%></font><br> JSP网页所在的目录位置<font color=#ff0000><%=request.getRealPath("./")%></font><br> JSP网页所在目录上一层目录的位置<font color=#ff0000><%=request.getRealPath("../")%></font><br> </body> </html>
文件属性的取得
<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.util.Date,java.io.*"%> <html> <head> <title>文件属性的取得</title> </head> <body> <% String path=request.getRealPath("/"); File f=new File(path,"ReadData.txt"); if(f.exists()){ %> <%=f.getName()%>的属性如下:<br><br> 文件长度为:<%=f.length()%> <%=f.isFile()?"是文件":"不是文件"%><br> <%=f.isDirectory()?"是目录":"不是目录"%><br> <%=f.canRead()?"可读取":"不可读取"%><br> <%=f.canWrite()?"可写入":"不可写入"%><br> <%=f.isHidden()?"是隐藏文件":"不是隐藏文件"%><br> 文件的最后修改日期为:<%=new Date(f.lastModified())%><br> <% }else{ f.createNewFile();//在当前目录下建立一个名为ReaData.txt的文件 %> <%=f.getName()%>的属性如下:<br><br> 文件长度为:<%=f.length()%> <%=f.isFile()?"是文件":"不是文件"%><br> <%=f.isDirectory()?"是目录":"不是目录"%><br> <%=f.canRead()?"可读取":"不可读取"%><br> <%=f.canWrite()?"可写入":"不可写入"%><br> <%=f.isHidden()?"是隐藏文件":"不是隐藏文件"%><br> 文件的最后修改日期为:<%=new Date(f.lastModified())%><br> <% } %> </body> </html>
取出目录中文件的方法
<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.io.*"%> <html> <head> <title>取出目录中文件的方法--列出目录中的文件</title> </head> <body> <% String path=request.getRealPath("/"); File d=new File(path);//建立当前目录中文件的File对象 File list[]=d.listFiles();//取得代表目录中所有文件的File对象数组 out.println("<font color=#ff0000>" + path + "目录下的文件:</font><br>"); for(int i=0;i<list.length;i++){ if(list<I>.isFile()){ out.println(list<I>.getName() + "<br>"); } } out.println("<br><font color=#ff0000>" + path + "目录下的目录:</font><br>"); for(int i=0;i<list.length;i++){ if(list<I>.isDirectory()){ out.println(list<I>.getName() + "<br>"); } } %> </body> </html>
判断是否为空白文件
<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.io.*"%> <html> <head> <title>判断是否为空白文件</title> </head> <body> <% String path=request.getRealPath("/"); out.println(path); FileReader fr=new FileReader(path + "\\AtEnd.txt");//建立FileReader对象,并实例化为fr //对FileReader类生成的对象使用read()方法,可以从字符流中读取下一个字符。 if(fr.read()==-1)//判断是否已读到文件的结尾 { out.print("AtEnd.txt文件中没有数据<br>"); }else{ out.println("AtEnd.txt文件中有数据"); } fr.close(); %> </body> </html>
读取所有的文件数据
<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.io.*,java.lang.*"%> <html> <head> <title>读取所有的文件数据</title> </head> <body> <% String path=request.getRealPath("."); FileReader fr=new FileReader(path + "\\ReadData.txt"); //关键在于读取过程中,要判断所读取的字符是否已经到了文件的末尾,并且这个字符是不是文件中的断行符,即判断该字符值是否为13。 int c=fr.read();//从文件中读取一个字符 //判断是否已读到文件结尾 while(c!=-1){ out.print((char)c);//输出读到的数据 c=fr.read();//从文件中继续读取数据 if(c==13){//判断是否为断行字符 out.print("<br>");//输出分行标签 fr.skip(1);//略过一个字符 //c=fr.read();//读取一个字符 } } fr.close(); %> </body> </html>