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

4星 · 超过85%的资源 需积分: 47 2 下载量 5 浏览量 更新于2024-07-27 收藏 86KB DOC 举报
"Java IO操作包括读写、追加、删除、移动、复制和修改文件。本文主要关注读取文件内容的方法,如按字节、字符、行和随机读取。" 在Java中,IO(Input/Output)操作是处理输入和输出数据的关键部分。Java提供了丰富的类库来支持对文件的各种操作。以下是一些读取文件内容的主要方法: 1. 按字节读取文件内容 使用`FileInputStream`类可以按字节读取文件内容。这适用于二进制文件,如图像、音频或视频文件。下面的代码展示了如何按字节读取文件: ```java File file = new File(fileName); InputStream in = null; try { in = new FileInputStream(file); int tempByte; while ((tempByte = in.read()) != -1) { System.out.write(tempByte); } } catch (IOException e) { e.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 这里,我们使用`read()`方法读取单个字节,直到文件结束。 2. 按字符读取文件内容 对于文本文件,我们通常按字符读取。`FileReader`和`BufferedReader`可以实现这一点。例如: ```java BufferedReader reader = new BufferedReader(new FileReader(fileName)); String line; try { while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } finally { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } ``` `readLine()`方法读取文件的一行内容。 3. 按行读取文件内容 类似于按字符读取,但`BufferedReader`提供了更高效的方式按行读取: ```java BufferedReader br = new BufferedReader(new FileReader(fileName)); try { String line; while ((line = br.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } finally { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } ``` 4. 随机读取文件内容 对于需要在文件的任何位置访问数据的情况,可以使用`RandomAccessFile`。它允许你定位到文件的任意位置并读取数据: ```java RandomAccessFile raf = new RandomAccessFile(fileName, "r"); try { long position = 100; // 要读取的位置 raf.seek(position); byte[] buffer = new byte[10]; int bytesRead = raf.read(buffer); while (bytesRead != -1) { System.out.write(buffer, 0, bytesRead); bytesRead = raf.read(buffer); } } catch (IOException e) { e.printStackTrace(); } finally { try { raf.close(); } catch (IOException e) { e.printStackTrace(); } } ``` 除了读取文件,Java IO还提供了写文件、追加内容、删除、移动和复制文件的API。例如,`FileWriter`用于写入文本文件,`FileOutputStream`用于写入二进制文件,`Files.copy()`方法用于复制文件,`File.delete()`用于删除文件,`Files.move()`用于移动文件,`File.renameTo()`用于重命名文件。 在进行这些操作时,确保处理好异常,并在操作完成后关闭流,以防止资源泄漏。在实际应用中,通常会使用try-with-resources语句,自动关闭流,简化代码并保证资源的正确释放。例如: ```java try (FileInputStream fis = new FileInputStream(fileName)) { // 文件读取操作 } catch (IOException e) { e.printStackTrace(); } ``` 这就是Java IO操作的基本介绍,涵盖了从简单读取到复杂操作的各种场景。在实际编程中,根据具体需求选择合适的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 上传