/**
?* //FileOperate.java
?* 文件的各種操作
?* 楊彩
http://blog.sina.com.cn/m/yangcai?* 文件操作 1.0
?*/
?
//package common;
?
import java.io.*;
?
public class FileOperate
{
?static boolean exitnow=false;
?static String aa,bb;
? public FileOperate() {
? }
?
? /**
?? * 新建目錄
?? */
? public void newFolder(String folderPath) {
??? try
??? {
????? String filePath = folderPath;
????? filePath = filePath.toString();
????? File myFilePath = new File(filePath);
????? if(!myFilePath.exists())
????? {
??????? myFilePath.mkdir();
????? }
????? System.out.println("新建目錄操作 成功執行");
??? }
??? catch(Exception e)
??? {
????? System.out.println("新建目錄操作出錯");
????? e.printStackTrace();
??? }
? }
?
? /**
?? * 新建文件
?? */
? 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();
????? System.out.println("新建文件操作 成功執行");
??? }
??? catch (Exception e) {
????? System.out.println("新建目錄操作出錯");
????? e.printStackTrace();
?
??? }
?
? }
?
? /**
?? * 刪除文件
?? */
? public void delFile(String filePathAndName) {
??? try {
????? String filePath = filePathAndName;
????? filePath = filePath.toString();
????? File myDelFile = new File(filePath);
????? myDelFile.delete();
????? System.out.println("刪除文件操作 成功執行");
??? }
??? catch (Exception e) {
????? System.out.println("刪除文件操作出錯");
????? e.printStackTrace();
?
??? }
?
? }
?
? /**
?? * 刪除文件夾
?? */
? public void delFolder(String folderPath)
? {
??? try
??? {
????? delAllFile(folderPath); //刪除完里面所有內容
????? String filePath = folderPath;
????? filePath = filePath.toString();
????? File myFilePath = new File(filePath);
????? myFilePath.delete(); //刪除空文件夾
????? System.out.println("刪除文件夾操作 成功執行");
??? }
??? catch (Exception e)
??? {
????? System.out.println("刪除文件夾操作出錯");
????? e.printStackTrace();
?
??? }
?
? }
?
? /**
?? * 刪除文件夾里面的所有文件
?? * @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]);//再刪除空文件夾
????? }
??? }
????????? System.out.println("刪除文件操作 成功執行");?
? }
?
? /**
?? * 復制單個文件
?? * @param oldPath String 原文件路徑 如:c:/fqf.txt
?? * @param newPath String 復制后路徑 如:f:/fqf.txt
?? */
? 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;
??????? while ( (byteread = inStream.read(buffer)) != -1) {
????????? bytesum += byteread; //字節數 文件大小
????????? System.out.println(bytesum);
????????? fs.write(buffer, 0, byteread);
??????? }
??????? inStream.close();
????? }
??????????? System.out.println("刪除文件夾操作 成功執行");?
??? }
??? catch (Exception e) {
????? System.out.println("復制單個文件操作出錯");
????? e.printStackTrace();
?
??? }
?
? }
?
? /**
?? * 復制整個文件夾內容
?? * @param oldPath String 原文件路徑 如:c:/fqf
?? * @param newPath String 復制后路徑 如:f:/fqf/ff
?? */
? 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]);
??????? }
????? }
??????????? System.out.println("復制文件夾操作 成功執行");?
??? }
??? catch (Exception e) {
????? System.out.println("復制整個文件夾內容操作出錯");
????? e.printStackTrace();
?
??? }
?
? }
?
? /**
?? * 移動文件到指定目錄
?? * @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);
?
? }
?
? public static void main(String args[])
? {
? ?System.out.println("使用此功能請按[1]? 功能一:新建目錄");
? ?System.out.println("使用此功能請按[2]? 功能二:新建文件");
? ?System.out.println("使用此功能請按[3]? 功能三:刪除文件");
? ?System.out.println("使用此功能請按[4]? 功能四:刪除文件夾");
? ?System.out.println("使用此功能請按[5]? 功能五:刪除文件夾里面的所有文件");
? ?System.out.println("使用此功能請按[6]? 功能六:復制文件");
? ?System.out.println("使用此功能請按[7]? 功能七:復制文件夾的所有內容");
? ?System.out.println("使用此功能請按[8]? 功能八:移動文件到指定目錄");
? ?System.out.println("使用此功能請按[9]? 功能九:移動文件夾到指定目錄");
? ?System.out.println("使用此功能請按[10] 退出程序");
? ?
?while(!exitnow)
?{
? ??FileOperate fo=new FileOperate();
? ??try
? ??{
? ??BufferedReader Bin=new BufferedReader(new InputStreamReader(System.in));
? ??String a=Bin.readLine();
? ??int b=Integer.parseInt(a);
? ??
? ??switch(b)
? ??{
? ???case 1:System.out.println("你選擇了功能一? 請輸入目錄名");??
? ????? aa=Bin.readLine();
? ????? fo.newFolder(aa);
? ????? break;
? ???case 2:System.out.println("你選擇了功能二? 請輸入文件名");??
? ????? aa=Bin.readLine();
? ????? System.out.println("請輸入在"+aa+"中的內容");
? ????? bb=Bin.readLine();
? ????? fo.newFile(aa,bb);
? ????? break;
? ???case 3:System.out.println("你選擇了功能三? 請輸入文件名");??
? ????? aa=Bin.readLine();
? ????? fo.delFile(aa);
? ????? break;
? ???case 4:System.out.println("你選擇了功能四? 請輸入文件名");??
? ????? aa=Bin.readLine();
? ????? fo.delFolder(aa);
? ????? break;
? ???case 5:System.out.println("你選擇了功能五? 請輸入文件名");??
? ????? aa=Bin.readLine();
? ????? fo.delAllFile(aa);
? ????? break;??
? ???case 6:System.out.println("你選擇了功能六? 請輸入文件名");??
? ????? aa=Bin.readLine();
? ????? System.out.println("請輸入目標文件名");?
? ????? bb=Bin.readLine();
? ????? fo.copyFile(aa,bb);
? ????? break;
? ???case 7:System.out.println("你選擇了功能七? 請輸入源文件名");??
? ????? aa=Bin.readLine();
? ????? System.out.println("請輸入目標文件名");?
? ????? bb=Bin.readLine();
? ????? fo.copyFolder(aa,bb);
? ????? break;? ?????
? ???case 8:System.out.println("你選擇了功能八? 請輸入源文件名");??
? ????? aa=Bin.readLine();
? ????? System.out.println("請輸入目標文件名");?
? ????? bb=Bin.readLine();
? ????? fo.moveFile(aa,bb);
? ????? break;
? ??? ?case 9:System.out.println("你選擇了功能九? 請輸入源文件名");??
? ????? aa=Bin.readLine();
? ????? System.out.println("請輸入目標文件名");?
? ????? bb=Bin.readLine();
? ????? fo.moveFolder(aa,bb);
? ????? break;? ?????
? ???case 10:exitnow=true;
? ?????? System.out.println("程序結束,請退出");
? ????? break;
? ???default:System.out.println("輸入錯誤.請輸入1-10之間的數");?? ???? ????? ?
? ?? }
? ??
? ??
? ??System.out.println("請重新選擇功能");
? ??
? ??
? ??}
? ??catch(Exception e)
? ??{
? ??System.out.println("輸入錯誤字符或程序出錯");
? ??}
? ??
?}? ?
?}
}