Scanner扫描器读取文件注意事项:
1:Scanner读取文件的时候若读取的文件是utf-8格式的html文件的话,在构造Scanner对象的时候一定要设置成为utf-8文件的格式,要不读取的时候读取不出来或是乱码。
2:读取文件的路径在当前用户的路径下面,关于路径的分隔符(System.getProperty("user.home")+"/testemail.htm")用反斜杠"/"表示或是用File.separator表示都能在windows环境下
和unix环境下找到路径,不能用正斜杠"\"的方式来分隔,因为正斜杠是windows操作系统的分隔符,在unix路径下不能用其符号分隔,在java中可以用反斜杠"/"来统一表示文件路径的分隔符或是File.separator
分隔都可以。
ScannerTest.java:
package com.skyon.gd.test; import java.util.Scanner; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.Charset; /** * * @author sandy 两种方式读取文件一种方式是直接用BufferedReader来进行读取,另一种方式是用Scanner扫描器进行读取操作 */ public class ScannerTest { public static void main(String[] args) { //readFile1(); readFile2(); } private static void readFile1() { BufferedReader reader = null; try { // BufferedReader reader=new BufferedReader(new // FileReader(System.getProperty("user.home")+"/testemail.htm")); // 通过InputStreamReader的方式进行文件的去读,并且设置按照什么样的编码格式进行文件读取 reader = new BufferedReader(new InputStreamReader( new FileInputStream(System.getProperty("user.home") + "/testemail.htm"), Charset.forName("utf-8"))); String line = ""; int i = 0; try { while ((line = reader.readLine()) != null) { System.out.println(line); i++; } System.out.println("一共有:" + i + "行"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } } private static void readFile2() { File file = new File(System.getProperty("user.home") + "/testemail.htm"); Scanner scanner = null; try { // 按照utf-8的字符编码的格式进行扫描处理,若该文件的编码不是utf-8的编码方式则扫描出来的结果将0,也就是扫描不出来 // 假设test.txt的文件编码格式是gbk的编码方式,若按照utf-8的编码方式进行扫描的话,则扫描结果为0 scanner = new Scanner(file, "utf-8"); int i = 0; while (scanner.hasNextLine()) { StringBuffer sb = new StringBuffer(); String s = sb.append(scanner.nextLine()).toString(); System.out.println(s); i++; } System.out.println("一共有:" + i + "行"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { scanner.close(); } } }