• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    JAVA如何把HashMap內容輸出到文本文件

    Java中無論是將什么樣的數據寫入到文本文件中,都需要利用IO流去操作,我們需要利用java.io包中的類去實現,此中最主要的五個類是File、OutputStream、InputStream、Writer、Reader,我們利用OutputStream、InputStream實現字節的輸入和輸出操作,利用Writer、Reader去實現字符的輸入和輸出操作。這兩組類均為抽象類,可以按照利用場景的分歧利用分歧的實現類。

    東西/原料

    • IntelliJ IDEA

    方式/步調

    1. 1

      Java中我們利用流進行數據傳輸,就仿佛在數據源和目標之間成立了一條傳輸管道,我們可以想象一下就像水管一樣。IO流按照處置數據的類型分歧分為字符流和字節省,按照數據的流標的目的分歧可以分為輸入流和輸出流。IO流的分類可以參考下圖,我們將在接下來利用這里面的類。

    2. 2

      接下來我們建立一個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("\r\n");          }      } catch (Exception e) {      } finally {          try {              if (null != out) {                  out.flush();                  out.close();                  fos.close();              }          } catch (IOException e) {          }      }  }  

    3. 3

      我們在持續寫入文本文件時也需要去判定文件的巨細,若是文件過年夜的話,即便文件寫入當作功,打開也要期待很長時候,是以該方式仍是很有需要的。

      /**   * 按照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;  }  

    4. 4

      東西類已經寫完了,接下來即是若何將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);}

    5. 5

      運行上面的測試類,我們可以看到在E盤生當作了test.txt文件,我們打開該文件可以看到數據已經當作功寫入了,同時節制臺也打印輸出了文件的巨細,如下圖所示。

    注重事項

    • 注重在寫入文件時若是文件或文件地點的目次沒有建立,代碼中必然要建立。
    • 發表于 2019-01-09 00:00
    • 閱讀 ( 1195 )
    • 分類:電腦網絡

    你可能感興趣的文章

    相關問題

    0 條評論

    請先 登錄 后評論
    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆