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();
}
}
}
本文介绍了如何使用Java的Scanner类正确地读取不同编码格式的文件,并提供了具体的代码示例。重点强调了设置正确的文件编码格式的重要性,以及如何在Windows和Unix系统中正确指定文件路径。
2300

被折叠的 条评论
为什么被折叠?



