1. 程式人生 > >java 上傳,刪除檔案

java 上傳,刪除檔案

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.web.multipart.MultipartFile;

public class HandleFile {
    /**
     * 儲存檔案到本地,並返回檔案的url相對路徑
     * 
     * @param
file * 檔案 * @param basePath * 專案根目錄 * @return 檔案的url相對路徑 * @throws IOException */
public static String saveFile(MultipartFile file, String basePath) throws IOException { /*第2步:建立資料夾*/ /*1.1 根據今天的日期建立資料夾相對路徑 upload/2017-05-12 */ Date now = new
Date();// 獲取當前時間 Long longNow = now.getTime(); DateFormat dFormat = new SimpleDateFormat("yyyy-MM-dd"); String strToday = dFormat.format(longNow); String relFolderPath = "upload" + File.separator + strToday; // 資料夾相對路徑 /*1.2 資料夾全路徑:專案路徑/upload/2017-05-12 */ String fullFolderPath = basePath + File.separator + relFolderPath; // 資料夾全路徑
/*1.3 根據資料夾全路徑判斷,如果資料夾不存在,建立資料夾*/ File outFolder = new File(fullFolderPath); if (!outFolder.exists()) { outFolder.mkdirs(); } /*第2步:建立檔案*/ /*2.1 根據資料夾全路徑,檔名,當前日期的時間戳 建立檔案全路徑*/ String fileName = file.getOriginalFilename(); //獲取檔名(含字尾) String fullFilePath = fullFolderPath + File.separator + longNow + fileName; // 檔案全路徑 String fullUrlPath = "upload/" + strToday + "/" + longNow + fileName;// 要存入資料的相對路徑 /*第2.2步:根據檔案全路徑,建立檔案*/ File outFile = new File(fullFilePath); if (!outFile.exists()) {// 如果檔案不存在,建立檔案 outFile.createNewFile(); } /*第3步:根據空檔案,建立字元流的目的地(輸出流)*/ BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(outFile)); // 建立檔案輸出流 /*第4步:根據上傳的檔案,建立緩衝區,生成字元流,存入緩衝區*/ byte[] buffer = file.getBytes();// 建立檔案流 /*第5步:把緩衝區的字元流 寫入 字元流目的地(把輸入流寫入輸出流)*/ stream.write(buffer); /* 第6步:重新整理流,關閉流 */ stream.close(); return fullUrlPath; } /** * 根據檔案絕對路徑,刪除一個圖片,刪除記錄 * * @param fullFilePath */ public static void deleteFile(String fullFilePath) { File deleteFile = new File(fullFilePath); deleteFile.delete(); } }

儲存檔案的時候,也可以做如下修改

/*第4步之後可以修改如下,把緩衝區改用輸入流*/

/*第4步:獲取輸入流*/
InputStream iStream = file.getInputStream();
BufferedInputStream biStream = new BufferedInputStream(iStream);
/*第5步:把輸入流寫入輸出流*/
int f;
while ((f = biStream .read()) != -1) {
    outStream .write(f);        
}
/*第6步:重新整理流,關閉流*/
outStream .flush();
outStream .close();
biStream .close();
iStream.close();