Java文件读取:按字节、字符、行与随机读取
"java文本读取方法" 在Java中,有多种方法可以用来读取文本文件内容,主要包括按字节读取、按字符读取、按行读取以及随机读取。下面将详细介绍这些方法。 1. **按字节读取文件内容**: 使用`FileInputStream`类可以实现按字节读取文件。`FileInputStream`是Java中的一个字节流类,用于读取原始字节。在给定的代码示例中,`read()`方法被调用,它会返回下一个字节数据(-1表示已到达文件末尾)。通过循环读取并输出字节,我们可以得到整个文件的内容。这种方法适用于处理二进制文件,但对于包含特殊字符集的文本文件,可能会出现乱码问题。 2. **按字符读取文件内容**: 对于处理文本文件,更常见的方式是使用`FileReader`或`BufferedReader`。`FileReader`是字符流类,直接操作Unicode字符。在示例中,`BufferedReader`被使用,它提供了缓冲区功能,提高读取效率。`BufferedReader`的`readLine()`方法可以按行读取文本,使得处理文本文件更加方便。如果需要逐字符读取,可以使用`read()`方法。 3. **按行读取文件内容**: `BufferedReader`类提供了`readLine()`方法,可以一次性读取文件的一整行。这对于处理包含换行符的文本文件非常有用。在给定的代码中,没有具体展示如何按行读取,但可以这样实现: ```java String line; while ((line = reader.readLine()) != null) { System.out.println(line); } ``` 这将逐行打印出文件内容。 4. **随机读取文件内容**: 对于需要在文件任意位置读取数据的情况,可以使用`RandomAccessFile`类。它允许我们直接跳转到文件的任何位置进行读写操作。例如: ```java RandomAccessFile randomAccessFile = new RandomAccessFile(fileName, "r"); randomAccessFile.seek(100); // 跳转到文件的第100个字节 int byteRead = randomAccessFile.read(); ``` 这将在第100个字节位置读取一个字节。 在实际编程中,选择哪种读取方式取决于具体需求。如果只是简单地读取整个文本文件,`BufferedReader`通常是最好的选择,因为它提供了高效的行读取和缓冲功能。而如果需要处理二进制文件或进行随机访问,那么`FileInputStream`和`RandomAccessFile`则更为合适。
一、多种方式读文件内容。
1、按字节读取文件内容
2、按字符读取文件内容
3、按行读取文件内容
4、随机读取文件内容
Java代码
1.import java.io.BufferedReader;
2.import java.io.File;
3.import java.io.FileInputStream;
4.import java.io.FileReader;
5.import java.io.IOException;
6.import java.io.InputStream;
7.import java.io.InputStreamReader;
8.import java.io.RandomAccessFile;
9.import java.io.Reader;
10.
11.public class ReadFromFile {
12. /**
13. * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。
14. *
15. * @param fileName
16. * 文件的名
17. */
18. public static void readFileByBytes(String fileName) {
19. File file = new File(fileName);
20. InputStream in = null;
21. try {
23. // 一次读一个字节
24. in = new FileInputStream(file);
25. int tempbyte;
26. while ((tempbyte = in.read()) != -1) {
27. System.out.write(tempbyte);
28. }
29. in.close();
30. } catch (IOException e) {
31. e.printStackTrace();
32. return;
33. }
34. try {
35. System.out.println("以字节为单位读取文件内容,一次读多个字节:");
36. // 一次读多个字节
37. byte[] tempbytes = new byte[100];
38. int byteread = 0;
39. in = new FileInputStream(fileName);
40. ReadFromFile.showAvailableBytes(in);
41. // 读入多个字节到字节数组中,byteread为一次读入的字节数
42. while ((byteread = in.read(tempbytes)) != -1) {
43. System.out.write(tempbytes, 0, byteread);
44. }
45. } catch (Exception e1) {
46. e1.printStackTrace();
47. } finally {
48. if (in != null) {
49. try {
50. in.close();
51. } catch (IOException e1) {
剩余32页未读,继续阅读
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- JDK 17 Linux版本压缩包解压与安装指南
- C++/Qt飞行模拟器教员控制台系统源码发布
- TensorFlow深度学习实践:CNN在MNIST数据集上的应用
- 鸿蒙驱动HCIA资料整理-培训教材与开发者指南
- 凯撒Java版SaaS OA协同办公软件v2.0特性解析
- AutoCAD二次开发中文指南下载 - C#编程深入解析
- C语言冒泡排序算法实现详解
- Pointofix截屏:轻松实现高效截图体验
- Matlab实现SVM数据分类与预测教程
- 基于JSP+SQL的网站流量统计管理系统设计与实现
- C语言实现删除字符中重复项的方法与技巧
- e-sqlcipher.dll动态链接库的作用与应用
- 浙江工业大学自考网站开发与继续教育官网模板设计
- STM32 103C8T6 OLED 显示程序实现指南
- 高效压缩技术:删除重复字符压缩包
- JSP+SQL智能交通管理系统:违章处理与交通效率提升