彷佛有多種方法能夠用Java讀寫文件數據。 java
我想從文件中讀取ASCII數據。 有哪些可能的方法及其區別? spa
對於大型文件,我編寫的這段代碼要快得多: code
public String readDoc(File f) { String text = ""; int read, N = 1024 * 1024; char[] buffer = new char[N]; try { FileReader fr = new FileReader(f); BufferedReader br = new BufferedReader(fr); while(true) { read = br.read(buffer, 0, N); text += new String(buffer, 0, read); if(read < N) { break; } } } catch(Exception ex) { ex.printStackTrace(); } return text; }
這是不使用外部庫的另外一種方法: get
import java.io.File; import java.io.FileReader; import java.io.IOException; public String readFile(String filename) { String content = null; File file = new File(filename); // For example, foo.txt FileReader reader = null; try { reader = new FileReader(file); char[] chars = new char[(int) file.length()]; reader.read(chars); content = new String(chars); reader.close(); } catch (IOException e) { e.printStackTrace(); } finally { if(reader != null){ reader.close(); } } return content; }
可能不像使用緩衝I / O那樣快,可是很是簡潔: input
String content; try (Scanner scanner = new Scanner(textFile).useDelimiter("\\Z")) { content = scanner.next(); }
\\Z
模式告訴Scanner
,定界符爲EOF。 it
這是一個簡單的解決方案: io
String content; content = new String(Files.readAllBytes(Paths.get("sample.txt")));
用Java從文件中讀取數據的最簡單方法是利用File類讀取文件,並使用Scanner類讀取文件內容。 import
public static void main(String args[])throws Exception { File f = new File("input.txt"); takeInputIn2DArray(f); } public static void takeInputIn2DArray(File f) throws Exception { Scanner s = new Scanner(f); int a[][] = new int[20][20]; for(int i=0; i<20; i++) { for(int j=0; j<20; j++) { a[i][j] = s.nextInt(); } } }
PS:不要忘記導入java.util。*; 以便掃描儀正常工做。 file