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();
}
}
}
分享到:
相关推荐
它使用`HSSFWorkbook`类来读取工作簿,然后遍历所有的工作表、行和单元格,将数据收集到一个`StringBuffer`对象中。需要注意的是,示例代码中使用了`HSSFWorkbook`,这是针对.xls格式的;如果处理.xlsx文件,则应...
`BufferedReader`逐行读取文件内容并存储到`StringBuffer`中,最后返回整个文件内容。 2. **创建目录**: `createFolder(String folderPath)` 方法接受一个路径字符串,尝试创建一个新目录。它首先将路径转换为`...
这可能使用到`BufferedReader`读取文件,`StringBuffer`或`StringBuilder`处理内容,然后用`PrintWriter`或`FileWriter`写回。 4. **文件查找**:文件查找可能通过遍历目录结构实现,结合`File.listFiles()`返回...
- **读取文件**:可以使用`BufferedReader`或`Scanner`类来读取文件内容。 - **删除文件**:`File`类的`delete()`方法可以用来删除文件。 - **移动/重命名文件**:使用`Files.move()`方法可以移动或重命名文件。 - *...
- `Scanner`类也可以用来读取文件,特别适合处理非结构化的文本数据。 2. **写入文件(Write File)**: - 文件写入通常使用`FileWriter`或`BufferedWriter`类。`FileWriter`负责将字符写入文件,`BufferedWriter...
在Java中,可以通过`java.util.Scanner`从控制台读取用户输入,或者通过`args`数组获取命令行参数。 8. **字符串处理**:在构建输出内容时,你可能需要对字符串进行格式化、拼接等操作。Java提供了丰富的字符串处理...
- 示例代码展示了如何从控制台获取用户输入的数字,并通过 `Scanner` 读取文件内容。 在实际编程中,这些类的组合使用能帮助我们高效地处理文本数据、实现文件的读写以及用户输入的处理。了解并熟练掌握这些基本的...
这种方法的优点是它可以处理不同类型的文件,只要数据能被读取和写入即可。确保目标文件存在或创建新文件是很重要的步骤。 3. 写文件: - `PrintStreamDemo`方法展示了如何使用`PrintStream`写文件。`PrintStream`...
在Java中,复制文件通常使用文件输入流(`FileInputStream`)和文件输出流(`FileOutputStream`)的组合来实现。在提供的代码中,定义了一个`copyFile`方法,它接受源文件路径和目标文件路径作为参数。方法内部首先创建...
2. **Scanner类**:Scanner是Java提供的一个强大工具,可以方便地从各种数据源(如文件、系统输入)读取文本数据,支持各种数据类型的解析。 3. **正则表达式**:Java中的Pattern和Matcher类提供了强大的正则表达式...
当用户选择编写日记时,我们使用 Scanner 对象来读取用户的输入信息,包括姓名、天气、标题和内容。然后,我们使用 LocalDate 对象来获取当前日期,并将其格式化为字符串。接着,我们创建了一个名为 Diary 的对象,...
【mread-master.zip_mread-master_zip】是一个包含`mread-master`项目的压缩文件,这个项目可能是一个关于文本读取和处理的开源软件或者库。在分析这个项目之前,我们需要了解`teststringbuffer`指的是什么。通常,`...
文件的读写则使用前面提到的流类,如`FileInputStream`和`FileOutputStream`。 8. 链接流: Java允许流的链接,如`PipedInputStream`和`PipedOutputStream`可以连接两个流,实现数据的内部传递。 9. 标签中的...
在Java编程中,字符串是程序设计中不可或缺的一...学习这些内容后,你将有能力解决涉及字符串处理和文件I/O的常见问题,如替换文本文件中的特定字符。理解和熟练运用这些知识点对于任何Java程序员来说都是至关重要的。
可以使用JUnit等测试框架来编写测试用例,检查字符串排序和文件操作是否符合预期。 10. **性能优化**:对于大量数据,可能需要考虑使用更高效的排序算法,如快速排序或归并排序,以减少排序时间。同时,对于文件...
常用类和集合是JavaSE中的类和集合,用于处理各种数据和操作,包括Object、String、Math、Scanner、Date、Random、SimpleDateFormat、Calender、StringBuffer、Arrays、ArrayList、LinkedList、Vector、HashSet、...
可以使用`BufferedReader`或`Scanner`类来读取文件内容,并将其加载到程序的内存中,以便用户可以在记事本界面上查看和编辑。需要注意的是,要处理可能的文件不存在异常。 “复制”和“粘贴”操作是文本编辑器的...
- `Scanner`类可用于从文件中读取用户输入,如打开、保存和查找文件。 4. **事件处理** - 记事本程序中的按钮点击、菜单选择等都需要监听用户操作。这通常通过实现`ActionListener`接口或使用匿名内部类完成。 -...