Java IO操作详解:读写、追加、删除与文件操作

4星 · 超过85%的资源 需积分: 47 29 下载量 13 浏览量 更新于2024-07-27 2 收藏 86KB DOC 举报
"Java IO操作涉及对文件的读写、追加、删除、移动、复制和修改等操作,这是Java编程中非常重要的一部分。本文将主要介绍如何在Java中以不同方式读取文件内容,包括按字节、字符、行以及随机访问的方式。" 在Java中,读取文件内容有多种方法,每种方法适用于不同的场景: 1. 按字节读取文件内容: - 使用`FileInputStream`类,通过`read()`方法可以一次读取一个字节的数据。如果想一次性读取多个字节,可以创建一个字节数组并调用`read(byte[])`方法,它会返回实际读取的字节数。 ```java FileInputStream in = new FileInputStream(fileName); int tempByte; while ((tempByte = in.read()) != -1) { System.out.write(tempByte); } ``` 2. 按字符读取文件内容: - 对于文本文件,我们可以使用`FileReader`或`BufferedReader`类。`FileReader`是直接按字符读取的,而`BufferedReader`则提供了一种更高效的缓冲机制。 ```java FileReader fr = new FileReader(fileName); BufferedReader br = new BufferedReader(fr); String line; while ((line = br.readLine()) != null) { System.out.println(line); } ``` 3. 按行读取文件内容: - `BufferedReader`的`readLine()`方法可以按行读取文件,适合处理包含多行的文本文件。 4. 随机读取文件内容: - `RandomAccessFile`类允许我们随机地访问文件的任何位置进行读取或写入。 ```java RandomAccessFile raf = new RandomAccessFile(fileName, "r"); long position = 50; // 指定位置 raf.seek(position); // 移动到指定位置 int byteRead = raf.read(); ``` Java中进行文件的删除、移动和复制通常涉及到`File`类和`Files`类的方法。例如: - 删除文件:`File`类的`delete()`方法可以删除文件,但不支持删除目录。 - 移动文件:`Files.move()`方法可以实现文件的重命名或移动。 - 复制文件:`Files.copy()`方法可以用来复制文件,支持源文件和目标文件在同一文件系统内或跨文件系统复制。 注意在进行文件操作时,应处理可能出现的异常,如`IOException`,并确保在操作完成后关闭打开的流,以释放系统资源。在实际应用中,推荐使用try-with-resources语句来自动关闭流,以简化代码并避免资源泄露。 在进行IO操作时,理解各种流的区别和适用场景,以及正确处理异常,是确保程序健壮性的重要环节。通过熟练掌握这些基本操作,开发者可以高效地处理文件和数据流,实现复杂的数据处理任务。

存在4种类型的sram(sram1,sram2,sram3,sram4),其中sram1和sram2属于SPSRAM类型,sram3和sram4属于DPSRAM类型,每种类型的sram对应3个mux值(4,8,16),每个mux值对应一个word_depth列表和一个io列表。 具体如下: SPSRAM_sram1_word_depth_list_4.append(list(range(32, 1025, 16)) + list(range(1056, 8193, 16))) SPSRAM_sram1_word_depth_list_8.append(list(range(64, 2048, 32)) + list(range(2112, 16385, 32))) SPSRAM_sram1_word_depth_list_16.append(list(range(4096, 4097, 1)) + list(range(4224, 32769, 64))) SPSRAM_sram1_io_list_4.append(list(range(16, 145, 1))) SPSRAM_sram1_io_list_8.append(list(range(8, 73, 1))) SPSRAM_sram1_io_list_16.append(list(range(4, 40, 1))) SPSRAM_sram2_word_depth_list_4.append(list(range(32, 1025, 16))) SPSRAM_sram2_word_depth_list_8.append(list(range(64, 2048, 32))) SPSRAM_sram2_word_depth_list_16.append(list(range(4096, 4097, 1))) SPSRAM_sram2_io_list_4.append(list(range(16, 45, 1))) SPSRAM_sram2_io_list_8.append(list(range(8, 83, 1))) SPSRAM_sram2_io_list_16.append(list(range(4, 45, 1))) DPSRAM_sram3_word_depth_list_4.append(list(range(32, 756, 16))) DPSRAM_sram3_word_depth_list_8.append(list(range(64, 8754, 32))) DPSRAM_sram3_word_depth_list_16.append(list(range(4096, 3543, 1))) DPSRAM_sram3_io_list_4.append(list(range(16, 145, 1))) DPSRAM_sram3_io_list_8.append(list(range(8, 73, 1))) DPSRAM_sram3_io_list_16.append(list(range(4, 40, 1))) DPSRAM_sram4_word_depth_list_4.append(list(range(32, 1046, 16))) DPSRAM_sram4_word_depth_list_8.append(list(range(64, 2087, 32))) DPSRAM_sram4_word_depth_list_16.append(list(range(4096, 4046, 1))) DPSRAM_sram4_io_list_4.append(list(range(16, 87, 1))) DPSRAM_sram4_io_list_8.append(list(range(8, 35, 1))) DPSRAM_sram4_io_list_16.append(list(range(4, 27, 1))) 建立一个函数,当用户输入sram类型时,函数返回每个sram的每个mux对应word_depth_list最大值和io_list最大值。 示例: 当用户输入SPSRAM时,函数返回sram1和sram2中每个mux对应的word_depth_list最大值和io_list的最大值。

2023-03-08 上传