java讀寫文件
private void disposeData(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
String savePath = "/home/bigdisk/Python/notebook/scripts/liujunliang/ClueAnalysis/Input";
response.setCharacterEncoding("UTF-8");
File file = new File(savePath);
// 判斷上傳文件的保存目錄是否存在
if (!file.exists() && !file.isDirectory())
{
System.out.println(savePath + "目錄不存在,需要創建");
// 創建目錄
file.mkdir();
}
// 消息提示
String message = "";
String fname = "";
try
{
// 使用Apache文件上傳組件處理文件上傳步驟:
// 1、創建一個DiskFileItemFactory工廠
DiskFileItemFactory factory = new DiskFileItemFactory();
// 2、創建一個文件上傳解析器
ServletFileUpload upload = new ServletFileUpload(factory);
// 解決上傳文件名的中文亂碼
upload.setHeaderEncoding("UTF-8");
// 3、判斷提交上來的數據是否是上傳表單的數據
if (!ServletFileUpload.isMultipartContent(request))
{
// 按照傳統方式獲取數據
return;
}
// 4、使用ServletFileUpload解析器解析上傳數據,解析結果返回的是一個List<FileItem>集合,每一個FileItem對應一個Form表單的輸入項
List<FileItem> list = upload.parseRequest(request);
for (FileItem item : list)
{
// 如果fileitem中封裝的是普通輸入項的數據
if (item.isFormField())
{
String name = item.getFieldName();
// 解決普通輸入項的數據的中文亂碼問題
String value = item.getString("UTF-8");
System.out.println(name + "=" + value);
}
else
{// 如果fileitem中封裝的是上傳文件
// 得到上傳的文件名稱,
String filename = item.getName();
fname = filename;
if (filename == null || filename.trim().equals(""))
{
continue;
}
// 注意:不同的瀏覽器提交的文件名是不一樣的,有些瀏覽器提交上來的文件名是帶有路徑的,如: c:\a\b\1.txt,而有些只是單純的文件名,如:1.txt
// 處理獲取到的上傳文件的文件名的路徑部分,只保留文件名部分
filename = filename.substring(filename.lastIndexOf("/") + 1);
// 獲取item中的上傳文件的輸入流
InputStream in = item.getInputStream();
// 創建一個文件輸出流
FileOutputStream out = new FileOutputStream(savePath + "/" + filename);
// 創建一個緩衝區
byte buffer[] = new byte[1024];
// 判斷輸入流中的數據是否已經讀完的標識
int len = 0;
// 循環將輸入流讀入到緩衝區當中,(len=in.read(buffer))>0就表示in裏面還有數據
while ((len = in.read(buffer)) > 0)
{
// 使用FileOutputStream輸出流將緩衝區的數據寫入到指定的目錄(savePath + "\\" + filename)當中
out.write(buffer, 0, len);
}
// 關閉輸入流
in.close();
// 關閉輸出流
out.close();
// 刪除處理文件上傳時生成的臨時文件
item.delete();
message = "文件 \"" + fname + "\" 上傳成功!";
}
}
}
catch (Exception e)
{
message = "文件 \"" + fname + "\" 上傳失敗!";
e.printStackTrace();
}
PrintWriter out2 = null;
try
{
out2 = response.getWriter();
out2.print(message);
out2.flush();
}
catch (IOException e)
{
// LOGGER.warn("PrintWriter IOException:", e);
}
finally
{
IOUtils.closeQuietly(out2);
}
}