java IO 操作总结
package com.mybook.demo;import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream;import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream;import java.io.PrintWriter; import java.io.FileInputStream;; /** * @author Even.chen* version Java.0.1*/ public class Files { public static String path = "D:\\work\\mybook\\Files\";public static String newFilePath = "D:\\work\\mybook\\FilesNew\";public static void main(String[] args) throws IOException { Files f = new Files(); String fileName = "深入浅出General System V3.3.pdf";f.readFolderByFile(path); //不区分大小写boolean bool = f.fileIsNull(path,fileName);if (!bool) {f.copyFile(path+fileName, newFilePath+fileName);}//f.readLineFile("D:\\java\","TestFile.txt"); // System.out.println(f.fileIsNull("f:\","122.txt")); // System.out.println(f.createAndDeleteFolder("ss","f:\")); // System.out.println(f.createAndDeleteFile("f:\\ss\","TestFile.dat")); //f.createAndDeleteFolder("1","D:\\work\");//} /** * 文件的写入 * @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(String arg : args) { out.write(arg.toCharArray()); out.println(); //out.flush(); }System.out.println("写入成功!"); 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()){if(file.isFile()) { file.delete(); result = true; System.out.println("文件已经删除!"); } else { System.out.println("对不起,该路径为目录!"); }}else { file.createNewFile(); //jdk5.0的新方法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()) { if(file.isDirectory()){file.delete(); System.out.println("目录已经存在,已删除!"); result = true; }else{System.out.println("对不起,该路径为文件!"); }} 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(File o : tempFile) { if(o.isFile()) { System.out.println("File : "+o.getName()); } if(o.isDirectory()) { System.out.println("Directory : "+o.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); //PrintWriter pr=new PrintWriter(fr);//pr.printint count = 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(); } /** * 一行一行的读取文件中的数据 * @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(); }/***************************以下是常用的文件操作方法******************************//** * @see 新建目录 * @param folderPath String 如 c:/fqf * @return boolean */ public void newFolder(String folderPath) { try { String filePath = folderPath; filePath = filePath.toString(); java.io.File myFilePath = new java.io.File(filePath); if (!myFilePath.exists()) { myFilePath.mkdir(); } } catch (Exception e) { System.out.println("新建目录操作出错"); e.printStackTrace(); } } /** * @see 新建文件 * @param filePathAndName String 文件路径及名称 如c:/fqf.txt * @param fileContent String 文件内容 * @return boolean */ public void newFile(String filePathAndName, String fileContent) { try { String filePath = filePathAndName; filePath = filePath.toString(); File myFilePath = new File(filePath); if (!myFilePath.exists()) { myFilePath.createNewFile(); } FileWriter resultFile = new FileWriter(myFilePath); PrintWriter myFile = new PrintWriter(resultFile); String strContent = fileContent; myFile.println(strContent); resultFile.close(); } catch (Exception e) { System.out.println("新建文件操作出错"); e.printStackTrace(); } } /** * @see 删除文件 * @param filePathAndName String 文件路径及名称 如c:/fqf.txt * @param fileContent String * @return boolean */ public void delFile(String filePathAndName) { try { String filePath = filePathAndName; filePath = filePath.toString(); java.io.File myDelFile = new java.io.File(filePath); myDelFile.delete(); System.out.println(myDelFile + "\\文件存在,已删除。"); } catch (Exception e) { System.out.println("删除文件操作出错"); e.printStackTrace(); } } /** * @see 删除文件夹 * @param filePathAndName String 文件夹路径及名称 如c:/fqf * @param fileContent String * @return boolean */ public void delFolder(String folderPath) { try { delAllFile(folderPath); //删除完里面所有内容 String filePath = folderPath; filePath = filePath.toString(); java.io.File myFilePath = new java.io.File(filePath); myFilePath.delete(); //删除空文件夹 } catch (Exception e) { System.out.println("删除文件夹操作出错"); e.printStackTrace(); } } /** * @see 删除文件夹里面的所有文件 * @param path String 文件夹路径 如 c:/fqf */ public void delAllFile(String path) { File file = new File(path); if (!file.exists()) { return; } if (!file.isDirectory()) { return; } String[] tempList = file.list(); File temp = null; for (int i = 0; i < tempList.length; i++) { if (path.endsWith(File.separator)) { temp = new File(path + tempList[i]); } else { temp = new File(path + File.separator + tempList[i]); } if (temp.isFile()) { temp.delete(); } if (temp.isDirectory()) { delAllFile(path+"/"+ tempList[i]);//先删除文件夹里面的文件 delFolder(path+"/"+ tempList[i]);//再删除空文件夹 } } } /** * @see 复制单个文件 * @param oldPath String 原文件路径 如:c:/fqf.txt * @param newPath String 复制后路径 如:f:/fqf.txt * @return boolean */ public void copyFile(String oldPath, String newPath) { try { int bytesum = 0; int byteread = 0; File oldfile = new File(oldPath); if (oldfile.exists()) { //文件存在时 InputStream inStream = new FileInputStream(oldPath); //读入原文件 FileOutputStream fs = new FileOutputStream(newPath); byte[] buffer = new byte[1444]; //int length = 0; while ( (byteread = inStream.read(buffer)) != -1) { bytesum += byteread; //字节数 文件大小 System.out.println(bytesum); fs.write(buffer, 0, byteread); } inStream.close(); } } catch (Exception e) { System.out.println("复制单个文件操作出错"); e.printStackTrace(); } } /** * @see 复制整个文件夹内容 * @param oldPath String 原文件路径 如:c:/fqf * @param newPath String 复制后路径 如:f:/fqf/ff * @return boolean */ public void copyFolder(String oldPath, String newPath) { try { (new File(newPath)).mkdirs(); //如果文件夹不存在 则建立新文件夹 File a=new File(oldPath); String[] file=a.list(); File temp=null; for (int i = 0; i < file.length; i++) { if(oldPath.endsWith(File.separator)){ temp=new File(oldPath+file[i]); } else{ temp=new File(oldPath+File.separator+file[i]); } if(temp.isFile()){ FileInputStream input = new FileInputStream(temp); FileOutputStream output = new FileOutputStream(newPath + "/" + (temp.getName()).toString()); byte[] b = new byte[1024 * 5]; int len; while ( (len = input.read(b)) != -1) { output.write(b, 0, len); } output.flush(); output.close(); input.close(); } if(temp.isDirectory()){//如果是子文件夹 copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]); } } } catch (Exception e) { System.out.println("复制整个文件夹内容操作出错"); e.printStackTrace(); } } /** * @see 移动文件到指定目录 * @param oldPath String 如:c:/fqf.txt * @param newPath String 如:d:/fqf.txt */ public void moveFile(String oldPath, String newPath) { copyFile(oldPath, newPath); delFile(oldPath); } /** * 移动文件到指定目录 * @param oldPath String 如:c:/fqf.txt * @param newPath String 如:d:/fqf.txt */ public void moveFolder(String oldPath, String newPath) { copyFolder(oldPath, newPath); delFolder(oldPath); } /** * @see 获得系统根目录绝对路径 * @return String * */ public String getPath(){ String sysPath = this.getClass().getResource("/").getPath(); //对路径进行修改 sysPath = sysPath.substring(1, sysPath.length() - 16); return sysPath; }