導出word文檔案例「java導出word文檔亂碼」

公司數據遷移,一些附件無法直接導入到新系統,然後需要將附件從原系統下載到本地再上傳到新系統,系統平台為 jira ,這裡寫了一個批量上傳的代碼,採用的是 curl 的方式,其中需要獲取本地文件路徑:

public static ArrayList<String> getFiles(String path) {
		ArrayList<String> files = new ArrayList<>();
		File file = new File(path);
		if (file.exists() && file.isDirectory() && file.canRead()) {
			File[] tempList = file.listFiles();
			for (int i = 0; i < tempList.length; i++) {
				if (tempList[i].isFile()) {
					files.add(tempList[i].toString());
				}
			}
			return files;
		}
		return null;
	}

這時候出現了一個問題,文件名包含中文,debug 的時候發現獲取到的文件名出現了亂碼

java 獲取本地文件名及中文名亂碼解決
java 獲取本地文件名及中文名亂碼解決

看了很多文章說需要轉碼,一一嘗試沒什麼用,這時候獲取本地編碼方式發現出現了一個很奇怪的編碼:Cp1252,最後終於找到問題所在,是eclipse 默認編碼的問題(別問我為什麼不用 IDEA,公司不給用啊!),解決方式如圖:

Window –> preference –>

java 獲取本地文件名及中文名亂碼解決

將編碼格式修改為 UTF-8,再次運行程序就沒有文件名亂碼的問題了。

批量上傳:

public static String execCurl(String issueKey, String file) {
		HashMap<String, String> info = GetPropertiesUtil.getInfo();
		String user = info.get("user");
		String password = info.get("password");
		String domain = info.get("domain");
		
		String[] cmds = { "curl", "-D-", "-u", user + ":" + password, "-X", "POST", "-H", "X-Atlassian-Token: no-check",
				"-F", "file=@" + file, domain + issueKey + "/attachments" };
		ProcessBuilder process = new ProcessBuilder(cmds);
		Process p;
		try {
			p = process.start();
			BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
			StringBuilder builder = new StringBuilder();
			String line = null;
			while ((line = reader.readLine()) != null) {
				builder.append(line);
				builder.append(System.getProperty("line.separator"));
			}
			return builder.toString();

		} catch (IOException e) {
			System.out.print("error");
			e.printStackTrace();
		}
		return null;
	}

注意:curl 命令要存到一個字元串數組內。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/255331.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-15 12:26
下一篇 2024-12-15 12:26

相關推薦

發表回復

登錄後才能評論