Java基础I/O流总结

I/O流分类

按数据流向分为:输入流、输出流

按处理数据单位分为:字节流、字符流

按功能分为:节点流、 处理流


四种基本抽象流类型




字符流和字节流

字符流和字节流的主要区别:

      1.字节流读取的时候,读到一个字节就返回一个字节;  字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。

      2.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,中文一定要用字符流,除此之外都用字节流。

节点流和处理流


处理流

缓冲流

BufferedInputStream

BufferedOutputStream

BufferedReader     提供了readline方法,一次读取一行

BufferedWriter


转换流

    用于字节数据到字符数据的转换,该流对象中可以对读取到的字节数据进行指定编码的编码转换。

InputStreamReader

OutputStreamWriter


数据流

该数据流可以方便地对一些基本类型数据进行直接的存储和读取,不需要再进一步进行转换,通常只要操作基本数据类型的数据,就需要通过DataStream进行包装。

DataInputStream

DataOutputStream


打印流

PrintStream

PrintWriter


对象流

该类型的流可以把类作为一个整体进行存取,被写入的对象必须实现一个接口:Serializable

ObjectInputStream

ObjectOutputStream



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Java 中使用 I/O 复制文件可以使用如下的代码: ``` import java.io.*; public class CopyFile { public static void main(String[] args) { // 要复制的文件的路径 String srcFile = "/path/to/src/file.txt"; // 复制后的文件的路径 String destFile = "/path/to/dest/file.txt"; try (InputStream in = new FileInputStream(srcFile); OutputStream out = new FileOutputStream(destFile)) { // 缓冲区大小 byte[] buffer = new byte[1024]; int length; // 循环读取文件内容并写入到新文件中 while ((length = in.read(buffer)) > 0) { out.write(buffer, 0, length); } } catch (IOException e) { e.printStackTrace(); } } } ``` 上面的代码使用了 try-with-resources 语句,这样在结束后会自动关闭。如果不使用 try-with-resources 语句,需要在 finally 块中手动关闭。 需要注意的是,上面的代码只能复制纯文本文件。如果要复制二进制文件,需要使用字节(InputStream 和 OutputStream)而不是字符(Reader 和 Writer)。 ### 回答2: 文件复制通过使用Java中的I/O可以轻松地实现。下面是一个简单的示例,演示了如何使用I/O来实现文件复制。 ```java import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class FileCopy { public static void main(String[] args) { String sourceFilePath = "source.txt"; // 源文件路径 String targetFilePath = "target.txt"; // 目标文件路径 try { // 创建输入和输出 FileInputStream input = new FileInputStream(sourceFilePath); FileOutputStream output = new FileOutputStream(targetFilePath); // 创建一个缓冲区,用于存储读取/写入的数据 byte[] buffer = new byte[1024]; int bytesRead; // 读取源文件中的数据,并将其写入目标文件中 while ((bytesRead = input.read(buffer)) != -1) { output.write(buffer, 0, bytesRead); } // 关闭 input.close(); output.close(); System.out.println("文件复制完成!"); } catch (IOException e) { System.out.println("发生错误:" + e.getMessage()); } } } ``` 上述代码中,我们首先指定源文件和目标文件的路径。然后,我们使用`FileInputStream`和`FileOutputStream`类创建输入和输出。我们还创建了一个缓冲区,用于存储读取和写入的数据。 在`while`循环中,我们使用`read()`方法从输入读取数据,并使用`write()`方法将读取的数据写入输出。我们还使用`bytesRead`变量来记录实际读取的字节数,以便正确写入到输出中。 最后,我们在`IOException`中捕获任何可能发生的错误,并将错误消息输出到控制台。如果没有错误发生,则输出"文件复制完成!"的消息。 通过运行上述代码,我们可以将一个文件的内容复制到另一个文件中。请确保源文件存在,并且目标文件不存在,以避免发生意外的覆盖。 ### 回答3: Java使用I/O完成文件复制非常简单。我们可以使用字节或字符来实现文件复制。 使用字节实现文件复制时,首先需要创建一个文件输入和一个文件输出。然后,通过循环从文件输入中读取字节,并将其写入文件输出中,实现文件复制。最后记得关闭输入和输出。 代码示例: ```java import java.io.*; public class FileCopy { public static void main(String[] args) { // 设置输入文件和输出文件的路径 String inputFilePath = "input.txt"; String outputFilePath = "output.txt"; try { FileInputStream inputStream = new FileInputStream(inputFilePath); FileOutputStream outputStream = new FileOutputStream(outputFilePath); // 定义一个字节数组来存储读取的字节数据 byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } // 关闭输入和输出 inputStream.close(); outputStream.close(); System.out.println("文件复制成功!"); } catch (IOException e) { e.printStackTrace(); } } } ``` 使用字符实现文件复制时,操作步骤与字节类似。只是在创建时需要使用Reader和Writer类,同时要保证源文件和目标文件的编码类型一致。 代码示例: ```java import java.io.*; public class FileCopy { public static void main(String[] args) { // 设置输入文件和输出文件的路径 String inputFilePath = "input.txt"; String outputFilePath = "output.txt"; try { FileReader reader = new FileReader(inputFilePath); FileWriter writer = new FileWriter(outputFilePath); // 定义一个字符数组来存储读取的字符数据 char[] buffer = new char[1024]; int charsRead; while ((charsRead = reader.read(buffer)) != -1) { writer.write(buffer, 0, charsRead); } // 关闭输入和输出 reader.close(); writer.close(); System.out.println("文件复制成功!"); } catch (IOException e) { e.printStackTrace(); } } } ``` 无论使用字节还是字符Java中的I/O都提供了方便的方法来实现文件复制。通过以上的代码示例,我们可以轻松地完成文件复制操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值