spring boot 獲取 src 目錄下的 文件結構,以及讀寫 頁面檔案
阿新 • • 發佈:2019-02-01
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; import java.io.RandomAccessFile; import java.net.URI; import java.net.URISyntaxException; import java.nio.charset.Charset; import java.nio.file.DirectoryStream.Filter; import java.nio.file.FileStore; import java.nio.file.FileSystem; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.ResourceUtils; @Service public class FileUtil { @Value("${cms.defaultEncode}") public String defaultEncode; @Value("${cms.maxReadFileSize}") public Long maxReadFileSize; @Value("${spring.profiles.active}") private String profilesActive; Logger logger = LoggerFactory.getLogger(FileUtil.class); static String classPathRoot; public StringBuilder getFileContentToString(String filePath){ StringBuilder fileContent = new StringBuilder(); Path filepath = Paths.get(filePath); File file = filepath.toFile(); RandomAccessFile randomAccessFile = null; try { if(file.exists()){ randomAccessFile = new RandomAccessFile(file, "r"); //從頭開始讀 randomAccessFile.seek(0); String tempString = null; while(null != (tempString = randomAccessFile.readLine())){ fileContent.append(new String(tempString.getBytes(),defaultEncode)).append('\u005Cr'); } } } catch (IOException ee) { logger.error(ee.getMessage(),ee); } finally { if(null != randomAccessFile){ try { randomAccessFile.close(); } catch (IOException e) { logger.error(e.getMessage(),e); } } } return fileContent; } public boolean createFileContentToLocalFile(String filePath,String content){ Path filepath = Paths.get(filePath); File file = filepath.toFile(); FileOutputStream fileOutputStream = null; if(!filepath.getParent().toFile().exists()){ filepath.getParent().toFile().mkdir(); } try { Files.createFile(filepath); //覆蓋 fileOutputStream = new FileOutputStream(file,false); fileOutputStream.write(content.getBytes(defaultEncode)); } catch (Exception ee) { logger.error(ee.getMessage(),ee); return false; } finally{ if(null != fileOutputStream){ try { fileOutputStream.close(); } catch (IOException e) { logger.error(e.getMessage(),e); return false; } } } return true; } public boolean saveFileContentToLocalFile(String filePath,String content){ Path filepath = Paths.get(filePath); File file = filepath.toFile(); String templateFileName = "SYS_TEMP_" + file.getName(); Path tempFilepath = Paths.get(file.getParentFile().getPath()+File.separator+templateFileName); File fileTemp = tempFilepath.toFile(); FileOutputStream fileOutputStream = null; //FileOutputStream tempFileOutputStream = null; //PrintStream printStream = null; try { //fileTemp.createNewFile(); //追加 //tempFileOutputStream = new FileOutputStream(fileTemp,true); //覆蓋 //tempFileOutputStream = new FileOutputStream(fileTemp,false); //tempFileOutputStream.write(content.getBytes(defaultEncode)); // printStream = new PrintStream(tempFileOutputStream); // printStream.print(content); //先儲存一下防止異常 Files.copy(filepath, tempFilepath); //覆蓋 if(null != file ){ file.delete(); } fileOutputStream = new FileOutputStream(file,false); fileOutputStream.write(content.getBytes(defaultEncode)); } catch (Exception ee) { logger.error(ee.getMessage(),ee); return false; } finally{ // if(null != printStream){ // printStream.close(); // } if(null != fileOutputStream){ try { fileOutputStream.close(); } catch (IOException e) { logger.error(e.getMessage(),e); return false; } } // if(null != tempFileOutputStream){ // try { // tempFileOutputStream.close(); // } catch (IOException e) { // logger.error(e.getMessage(),e); // return false; // } // } if(null != fileTemp){ fileTemp.delete(); } } return true; } public List<File> getFileList(String path) { List<File> result = new ArrayList<File>(); Path readPath = Paths.get(path); File fileFromPath = readPath.toFile(); if(fileFromPath.isDirectory()){ File[] fileList = fileFromPath.listFiles(new FileFilter() { // //只取檔案 // @Override // public boolean accept(File pathname) { // if(null != pathname && pathname.isFile() ){ // return true; // } // else{ // return false; // } // } //所有檔案 資料夾都取 @Override public boolean accept(File pathname) { if(null != pathname ){ return true; } else{ return false; } } }); result = Arrays.asList(fileList); } else{ } return result; } public String getFileContentToString(File file) { ByteArrayOutputStream baos = null; FileInputStream fis = null; try { fis = new FileInputStream(file); baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; for (int len = 0; (len = fis.read(buffer)) > 0;) { baos.write(buffer, 0, len); } return new String(baos.toByteArray(),defaultEncode); } catch (Exception e) { logger.error(e.getMessage(),e); } finally { try { if(null != baos){ baos.close(); } if(null != fis){ fis.close(); } } catch (Exception e2) { logger.error(e2.getMessage(),e2); } } return null; } public void writeString(File file, String string) { FileOutputStream fos = null; try { fos = new FileOutputStream(file, false); fos.write(string.getBytes(defaultEncode)); } catch (Exception e) { } finally { try { if(null != fos){ fos.close(); } } catch (Exception e2) { logger.error(e2.getMessage(),e2); } } } public void deleteFile(String filePath) { Path filepath = Paths.get(filePath); File file = filepath.toFile(); file.delete(); } public String getClassPathRoot(){ if(null == classPathRoot || "".equals(classPathRoot)){ try { classPathRoot = ResourceUtils.getURL("classpath:").toURI().getRawPath(); if("dev".equals(profilesActive) && classPathRoot.startsWith("/")){ classPathRoot = classPathRoot.substring("/".length()); } } catch (FileNotFoundException | URISyntaxException e) { logger.error("獲取工程根路徑出錯"+e.getMessage(),e); } } return classPathRoot; } }