IO操做,對文件內容進行讀取和寫入

從一個文件中獲取內容,顯示在頁面上,並能夠進行編輯。java

點擊保存後再將頁面上的內容寫入到文件中。apache

至關於對文件內容作了一次增刪改查。app

①剛開始是這樣寫的工具

/*
 * 讀取文件內容
 */
public String readFileMethod(String path) throws IOException {
		File file = new File(path);
		if (!file.exists() || file.isDirectory())
			throw new FileNotFoundException();
		FileInputStream fis = new FileInputStream(file);
		byte[] buf = new byte[1024];
		StringBuffer sb = new StringBuffer();
		while ((fis.read(buf)) != -1) {
			sb.append(new String(buf, "UTF-8"));// 防止中文亂碼
			buf = new byte[1024];// 從新生成,避免和上次讀取的數據重複
		}
		return sb.toString();
	}
/*
 * 寫數據到文件
 */
 	public AjaxMsg writeFileMethod(String path, String arrCity) {
		try {
			File file = new File(path);
			if (!file.exists()) {
				file.createNewFile();
			}
			FileOutputStream out = new FileOutputStream(file, false);
			StringBuffer sb = new StringBuffer();
			sb.append(arrCity);
			out.write(sb.toString().getBytes("utf-8"));
			out.close();
			return new AjaxMsg(true, "保存文件成功!");
		} catch (Exception e) {
			e.printStackTrace();
			return new AjaxMsg(false, "保存文件失敗!");
		}
	}

可是這樣的效果是,個別中文出現亂碼。緣由是UTF-8字符大部分佔用的是三個字節,而讀取文件的時候是每次取1024個字節,致使出現亂碼。編碼

具體見:字符編碼的演變:UTF-8中文佔幾個字節spa

②修改是這樣
.net

/*
 * 讀取文件內容
 */
 public String readFileMethod(String path) throws IOException {
		File file = new File(path);
		if (!file.exists() || file.isDirectory())
			throw new FileNotFoundException();
		String arrCity_value = FileUtils.readFileToString(file, "UTF-8");
		return arrCity_value;
	}
/*
 * 寫數據到文件
 */
 	public AjaxMsg writeFileMethod(String path, String arrCity) {
		try {
			File file = new File(path);
			if (!file.exists()) {
				file.createNewFile();
			}
			FileUtils.write(file, arrCity, "UTF-8");
			return new AjaxMsg(true, "保存文件成功!");
		} catch (Exception e) {
			e.printStackTrace();
			return new AjaxMsg(false, "保存文件失敗!");
		}
	}

此次用的是 org.apache.commons.io.FileUtils 工具類中的方法,直接調用便可,很是方便。code

相關文章
相關標籤/搜索