星海爭霸21全功能兌換碼新手獎勵1、7小時遊戲時間(14天內)解除所有試玩版本限制直到7小時耗盡,如種族、匹配模式、戰役、地圖等詳細資訊(150119更新)4505624695013984483730049
2020-11-30 03:45:43
Java中無論是將什麼樣的資料寫入到文字檔案中,都需要使用IO流去操作,我們需要使用java.io包中的類去實現,其中最重要的五個類是File、OutputStream、InputStream、Writer、Reader,我們使用OutputStream、InputStream實現位元組的輸入和輸出操作,使用Writer、Reader去實現字元的輸入和輸出操作。這兩組類均為抽象類,可以根據使用場景的不同使用不同的實現類。
Java中我們使用流進行資料傳輸,就好像在資料源和目的之間建立了一條傳輸管道,我們可以想象一下就像水管一樣。IO流根據處理資料的型別不同分為字元流和位元組流,根據資料的流向不同可以分為輸入流和輸出流。IO流的分類可以參考下圖,我們將在接下來使用這裡面的類。
接下來我們建立一個TxtUtil工具類,來實現寫入文字檔案的方法。下面這個方法是將資料追加寫入到檔案檔案的末尾,我們可以看到該方法有兩個引數,List<String>就是我們要寫入的資料,因此不管是什麼格式的資料我們都需要轉成List<String>寫入,fileName是我們要寫入的檔案名,如果這個檔案不存在的話,下面的方法中new File(fileName)會幫我們建立。以下便是使用輸出了將資料寫入到檔案的程式碼,注意流在使用後一定要關閉。
/** * 資料追加寫到檔案末尾 * * @param dataList * @param fileName * @return */public static void appendData2File(List<String> dataList, String fileName) { OutputStreamWriter out = null; FileOutputStream fos = null; try { File file = new File(fileName); if (!file.getParentFile().isDirectory()) { file.getParentFile().mkdirs(); } if (!file.exists()) { file.createNewFile(); } // 追加寫入檔案,且使用UTF-8格式 fos = new FileOutputStream(fileName, true); out = new OutputStreamWriter(fos, "UTF-8"); for (int dataIndex = 0; dataIndex < dataList.size(); dataIndex++) { out.write(dataList.get(dataIndex)); out.write("rn"); } } catch (Exception e) { } finally { try { if (null != out) { out.flush(); out.close(); fos.close(); } } catch (IOException e) { } } }
我們在持續寫入文字檔案時也需要去判斷檔案的大小,如果檔案過大的話,即便檔案寫入成功,開啟也要等待很長時間,因此該方法還是很有必要的。
/** * 根據java.nio.*的流獲取檔案大小 * @param file */ public static long getFileSize(File file){ FileChannel fc = null; try { if(file.exists() && file.isFile()){ FileInputStream fis = new FileInputStream(file); fc = fis.getChannel(); return fc.size(); } } catch (Exception e) { e.printStackTrace(); }finally{ if(null!=fc){ try { fc.close(); } catch (IOException e) { e.printStackTrace(); } } } return 0; }
工具類已經寫完了,接下來便是如何將HashMap型別的資料寫入到文字檔案。我們建立一個Test類,在main方法中建立HashMap,並且放入一些測試資料,將HashMap中的資料轉成工具類中需要的List<String>型別,然後呼叫工具類中的方法將資料寫入檔案,最後列印檔案的大小。
public static void main(String[] args) { Map<String, Object> map = new HashMap<>(); map.put("桃子", 10); map.put("香蕉", 8); map.put("西瓜", 6); List<String> list = new ArrayList<>(); // 遍歷HashMap將資料轉為List<String> for(Map.Entry<String, Object> entry : map.entrySet()) { StringBuilder s = new StringBuilder(); s.append(entry.getKey()) .append(entry.getValue()).append("元"); list.add(s.toString()); } // 將資料寫入到文字檔案 String fileName = "E:/test.txt"; TxtUtil.appendData2File(list, fileName); long fileLength = TxtUtil.getFileSize( new File(fileName)); System.out.println(fileLength);}
執行上面的測試類,我們可以看到在E槽生成了test.txt檔案,我們開啟該檔案可以看到資料已經成功寫入了,同時控制台也列印輸出了檔案的大小,如下圖所示。
相關文章
星海爭霸21全功能兌換碼新手獎勵1、7小時遊戲時間(14天內)解除所有試玩版本限制直到7小時耗盡,如種族、匹配模式、戰役、地圖等詳細資訊(150119更新)4505624695013984483730049
2020-11-30 03:45:43
我們經常會玩決勝時刻戰區遊戲,但是有很多朋友不知道決勝時刻戰區國際服註冊方法,下面就詳細說下決勝時刻戰區國際服註冊方法。1首先我們開啟自己電腦中的瀏覽器,比如360瀏覽器
2020-11-29 16:08:59
決勝時刻黑色行動4的應用獲取的方法。1準備好網路的網速,開啟瀏覽器的頁面。 2決勝時刻黑色行動4將其輸入到搜尋頁中,點選搜尋。 3選擇圖中展示的決勝時刻黑色行動4中文版網頁
2020-11-29 16:06:30
決勝時刻是一個很好玩的遊戲,但是安裝過程比較困難,下面小編和你分享一下經驗! 1一般有很多個壓縮檔案的那種,任意解壓一個壓縮包之後會生成一個映象用虛擬光碟機載入,之後按用光
2020-11-29 10:07:32
小編教你決勝時刻9BO2.怎麼安裝,希望你的生活多姿多彩~ 1首先,你買的基本可以確定,是盜版,或者說所謂的偽正版——同學,多去steam吧或者戰地3吧看一看,會提高你對盜版/偽正版的鑑
2020-11-29 05:49:58
目前很多決勝時刻的玩家都在找版本10的中文版,其實現在正版的當中還沒有中文,退而求其次吧,小編這裡分享一些貼圖大家參考一下 1基礎選單,直接看圖片吧 2基礎選單,直接看圖片吧 3
2020-11-29 05:29:49