筆記圖床解決方案(新)
阿新 • • 發佈:2022-06-06
圖床選擇
- 鑑於免費的圖床有多種不穩定因素,所以推薦選擇較為低價的【阿里雲OSS】;
- 使用【阿里雲OSS】作為PicGo圖床的教程在此
-
教程地址:阿里雲OSS搭建圖床
舊圖床地址替換
-
- 我本人之前使用的是 Gitee 作為圖床,但圖床倉庫被封,本地 Markdown檔案無法訪問原圖片地址
- 所以需要將原來 MarkDown 檔案裡的對應圖片地址內容替換
- 自己寫了個 java 程式碼進行目錄下所有文字檔案的內容替換,歡迎使用
class HelpTool{ //獲取該資料夾下的所有檔案,資料夾除外 public List<File> getSubFiles(String dirPath){ List<File> subFiles = new ArrayList<>(); File file = new File(dirPath); if(file.isDirectory()){ //判斷是否是目錄,是目錄則進行下一步操作 for (File curFile : file.listFiles()){ if (curFile.isDirectory()){ //是目錄,則遞迴找檔案 subFiles.addAll(getSubFiles(curFile.getPath())); }else { //不是目錄,則直接新增該檔案 subFiles.add(curFile); } } }else { subFiles.add(file); } return subFiles; } //獲取指定檔案內的文字 private String getContent(File file){ //採用位元組流讀取檔案 if(file.isFile() && file.exists()){ try { FileInputStream fileInputStream = new FileInputStream(file); InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); StringBuilder sbd = new StringBuilder(); String text = null; while((text = bufferedReader.readLine()) != null){ sbd.append(text); sbd.append('\n'); } //關閉 bufferedReader.close(); inputStreamReader.close(); fileInputStream.close(); return sbd.toString(); } catch (Exception e) { e.printStackTrace(); } } return ""; } //將指定內容寫入到指定檔案中 private boolean writeToFile(File file, String content){ if(file.exists() && file.isFile()){ try { FileOutputStream outputStream = new FileOutputStream(file); OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream); BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter); bufferedWriter.write(content); //關閉 bufferedWriter.close(); outputStreamWriter.close(); outputStream.close(); } catch (IOException e) { e.printStackTrace(); return false; } return true; } return false; } //替換指定檔案路徑的檔案內容 public boolean changeContent(File file, String originalContent, String newContent){ if(!file.isDirectory()){ //獲取文字內容 String content = getContent(file); //列印替換後的文字內容 if(writeToFile(file,content.replaceAll(originalContent,newContent))){ System.out.println(file.getPath()+"---------------------替換成功!"); return true; } } System.out.println(file.getPath()+"------------非檔案!操作失敗!"); return false; } } public class PathChange { //資料夾路徑 static String directoryPath = ""; //要替換的內容 static String originalContent = ""; //替換後的內容 static String newContent = ""; public static void main(String[] args) { HelpTool helpTool = new HelpTool(); List<File> files = helpTool.getSubFiles(directoryPath); for (File curFile : files){ helpTool.changeContent(curFile,originalContent,newContent); } } }