程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java8中應用一行代碼讀取文件

Java8中應用一行代碼讀取文件

編輯:關於JAVA

Java8中應用一行代碼讀取文件。本站提示廣大學習愛好者:(Java8中應用一行代碼讀取文件)文章只能為提供參考,不一定能成為您想要的結果。以下是Java8中應用一行代碼讀取文件正文


JDK7中引入了新的文件操作類java.nio.file.File,它包括了許多有效的辦法來操作文件,好比檢討文件能否為隱蔽文件,或許是檢討文件能否為只讀文件。開辟者還可使用Files.readAllBytes(Path)辦法把全部文件讀入內存,此辦法前往一個字節數組,還可以把成果傳遞給String的結構器,以便創立字符串輸入。此辦法確保了當讀入文件的一切字節內容時,文件屬性是封閉的,不然就會湧現IO異常或其它的未檢討異常。這意味著在讀文件到最初的塊內容後,無需封閉文件。

要留意,此辦法不合適讀取很年夜的文件,由於能夠存在內存空間缺乏的成績。開辟者還應當明白劃定文件的字符編碼,以免任異常或解析毛病。

假如你想讀入文件作為字符串,那末你還可使用readAllLines(Path path, Charset cs)辦法,此辦法與之前的辦法類似,也是在讀完文件後無需封閉文件。然則它前往的不是字節數組,而是字符串數組。並且,Java8重寫了此辦法,無需指定字符集,直接應用UTF-8編碼停止字符串轉換。

假如你想一行一行的讀入文件作為字符串,那末你可使用Files.lines()辦法,它會從讀入的文件中前往字符串流,並應用UTF-8編碼把字節轉換成字符。應用forEach()辦法,可以只用一行Java代碼完成把文件的一切內容輸入到掌握台,以下面第三個代碼片斷。


import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;

public class FileReadingTest {
 public static void main(String[] args) throws IOException {
  // Java 7 例子
  // Files.readAllBytes默許以UTF-8編碼讀入文件,故文件的編碼假如不是UTF-8,那末中文內容會湧現亂字符
  System.out.println(new String(Files.readAllBytes(Paths.get("D:\\jd.txt"))));
   // Java 8例子
  List<String> lines = Files.readAllLines(Paths.get("D:\\jd.txt"), StandardCharsets.UTF_8);
  StringBuilder sb = new StringBuilder();
  for(String line : lines){
   sb.append(line);
  }
  String fromFile = sb.toString();
        System.out.println(fromFile);

 }
}

假如應用的不是JDK7,而是JDK8,那末一行代碼便可完成讀文件。


import static java.lang.System.out;
import static java.nio.file.Files.readAllBytes;
import static java.nio.file.Paths.get;

import java.io.IOException;
public class FileIntoString {
 public static void main(String[] args) throws IOException {
  // 一行代碼弄定讀文件,默許是UTF-8編碼
  out.println(new String(readAllBytes(get("d:/jd.txt"))));
 }
}

假如應用JDK8,那末還可使用流API來讀寫文件,如許代碼更簡練、高效。
上面的例子中,lines()辦法前往字符串流,字符串應用的是UTF-8編碼。以下:


import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;


public class Java8FileReader {
 public static void main(String[] args) throws IOException {
  // Java8用流的方法讀文件,加倍高效
  Files.lines(Paths.get("D:\\jd.txt"), StandardCharsets.UTF_8).forEach(System.out::println);
 }
}

下面的例子要留意幾點:

1)文件能夠很年夜,能夠會超越內存空間,應用前要做評價。
2)要輸入日記,記載為何沒法讀取文件或許在浏覽文件時碰到的任何毛病。
3)在把字節轉換成字符時,應當指定字符編碼。
4)要處置文件不存在的情形。

還要留意,假如讀入的文件的編碼是ANSI編碼,那末下面的例子在讀取文件內容時會報java.nio.charset.MalformedInputException: Input length = 1毛病。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved