Java中的IO操作是进行文件处理的核心技术之一,涵盖了读写、追加、删除、移动、复制、修改等基本功能。本文将围绕这些操作展开详细解释,重点解析如何使用Java进行文件的读取。 ### 一、Java IO读取文件内容 #### 1. 按字节读取文件内容 在Java中,可以通过`FileInputStream`类来按字节读取文件。此方法适用于读取二进制文件,例如图片、声音或视频等非文本数据。下面是一个简单的示例代码: ```java public static void readFileByBytes(String fileName) { File file = new File(fileName); InputStream in = null; try { System.out.println("以字节为单位读取文件内容,一次读一个字节:"); in = new FileInputStream(file); int tempByte; while ((tempByte = in.read()) != -1) { System.out.write(tempByte); } // 关闭流 in.close(); } catch (IOException e) { e.printStackTrace(); } } ``` 此外,还可以通过`read(byte[] b)`方法一次读取多个字节到字节数组中: ```java try { System.out.println("以字节为单位读取文件内容,一次读多个字节:"); byte[] tempBytes = new byte[100]; int bytesRead = 0; in = new FileInputStream(fileName); // 读入多个字节到字节数组中 while ((bytesRead = in.read(tempBytes)) != -1) { System.out.write(tempBytes, 0, bytesRead); } } catch (Exception e1) { e1.printStackTrace(); } ``` #### 2. 按字符读取文件内容 对于文本文件,可以使用`FileReader`或`InputStreamReader`类来按字符读取。这更适合于处理文本、数字等类型的文件。 ```java public static void readFileByChars(String fileName) { File file = new File(fileName); Reader reader = null; try { System.out.println("以字符为单位读取文件内容,一次读一个字节:"); reader = new InputStreamReader(new FileInputStream(file)); int tempChar; while ((tempChar = reader.read()) != -1) { if (((char) tempChar) != '\r') { // 屏蔽换行符 System.out.print((char) tempChar); } } reader.close(); } catch (Exception e) { e.printStackTrace(); } } ``` 同样,也可以使用`read(char[] cbuf)`方法一次性读取多个字符: ```java try { System.out.println("以字符为单位读取文件内容,一次读多个字节:"); char[] tempChars = new char[30]; int charsRead = 0; reader = new InputStreamReader(new FileInputStream(fileName)); while ((charsRead = reader.read(tempChars)) != -1) { if (charsRead == tempChars.length && tempChars[tempChars.length - 1] != '\n') { System.out.print(tempChars); } } } catch (Exception e1) { e1.printStackTrace(); } ``` #### 3. 按行读取文件内容 按行读取文件通常使用`BufferedReader`类,它提供了一个`readLine()`方法来逐行读取文件,这在处理大量文本数据时非常有用。 ```java import java.io.BufferedReader; import java.io.FileReader; public static void readFileByLines(String fileName) { try (BufferedReader br = new BufferedReader(new FileReader(fileName))) { String line; while ((line = br.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } ``` #### 4. 随机读取文件内容 使用`RandomAccessFile`类可以实现文件的随机访问,即可以从文件的任意位置开始读取或写入数据。这对于大型文件的数据处理非常高效。 ```java import java.io.RandomAccessFile; public static void randomReadFile(String fileName) { try (RandomAccessFile raf = new RandomAccessFile(fileName, "r")) { long length = raf.length(); for (long i = 0; i < length; i++) { raf.seek(i); // 移动文件指针到指定位置 int readByte = raf.readByte(); System.out.print(readByte); } } catch (IOException e) { e.printStackTrace(); } } ``` 通过上述四种方式,Java提供了丰富的API来满足不同场景下的文件读取需求,无论是二进制文件还是文本文件,都可以找到合适的读取方法。理解并掌握这些基础操作是进行更复杂文件处理的前提。
剩余14页未读,继续阅读
- Z-Davin2013-05-16学习编程,这个受用了,不错。
- wtwpiaoliu2013-11-10挺好用,不错
- wjp031002013-07-16挺好,挺全面的。
- chen633131092012-11-12学习编程,这个受用了,不错。
- larry1231232013-07-29写洗了。还差不多吧。不能说太好。
- 粉丝: 1
- 资源: 38
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 新建 Microsoft Word 文档
- (176102016)MATLAB代码:考虑灵活性供需不确定性的储能参与电网调峰优化配置 关键词:储能优化配置 电网调峰 风电场景生成 灵活性供需不
- SINAMICS S120驱动第三方直线永磁同步电机系列视频-配置和优化.mp4
- (175601006)51单片机交通信号灯系统设计
- Starter SINAMICS S120驱动第三方直线永磁同步电机系列视频-调试演示.mp4
- (174755032)抽烟、烟雾检测voc数据集
- 基于滑膜控制的差动制动防侧翻稳定性控制,上层通过滑膜控制产生期望的横摆力矩,下层根据对应的paper实现对应的制动力矩分配,实现车辆的防侧翻稳定性控制,通过通过carsim和simulink联合仿真
- 伺服系统基于陷波滤波器双惯量伺服系统机械谐振抑制matlab Simulink仿真 1.模型简介 模型为基于陷波滤波器的双惯量伺服系统机械谐振抑制仿真,采用Matlab R2018a Simul
- (175989002)DDR4 JESD79-4C.pdf
- lanchaoHunanHoutaiQiantai