【JAVA】File I/O

– 补个JAVA笔记–

本章的一些目标

  1. 会使用File类操作文件或目录属性
  2. 熟练使用字节流读写文件(略了)
  3. 熟练使用字符流读写文件
  4. 会使用字节流读写二进制文件(略了)

1、操作文件或目录属性
使用File类操作文件或目录属性:
一个File对象可以代表一个文件或目录。

File类的常用方法
1. boolean exists() 判断文件或目录是否存在
2. boolean isFile() 判断是否是文件
3. boolean isDirectory() 判断是否是目录
4. String getPath() 返回此对象表示的文件的相对路径名
5. String getAbsolutePath() 返回此对象表示的文件的绝对路径
6. String getName() 返回此对象指定的文件或目录
7. boolean delete() 删除此对象指定的文件或目录
8. boolean createNewFile() 创建名称的空文件,不创建文件夹
9. long length() 返回文件的长度,单位为字节,若文件不存在,则返回0L

2、Java的流
流,是指一串流动的字符,是以先进先出的方式和接受数据的通道。

一个流是一个输入设备或输出设备的抽象表示。

按照流的流向进行划分,可以分为输入流和输出流。
输入流:InputStream和Reader作为基类,只能从中读取数据,而不能向其中写入数据。
输出流:OutputStream和Writer作为基类,只能向其中写入数据,而不能从中读取数据。
例如:数据从内存到硬盘,通常我们称之为输出流。也就是说,这里的输入和输出,我们都是从程序运行所在的内存角度来划分的。

按照所操作的数据单元的不同,流又可以划分成字节流和字符流。
字节流操作的最小数据单元为8位的字节,而字符操作的最小数据单元是16位的字符。
字节流和字符流的区分非常简单,字节流建议用于二进制数据(如图片),字符流用于文本,它们的用法几乎是一模一样。

使用FileReader和BufferedReader读取文本文件

1、 引入相关包
2、创建一个BufferedReader对象。
FileReader fr = new FileReader(Path,文件地址);
BufferedReader br = new BurreredReader(fr);
3、利用BufferedReader类的方法读取文本文件的数据
br.readLine(); //读取一行数据,返回字符串
4、关闭流对象
br.close();
fr.close();

使用FileWriter和BufferedWriter写文本文件
1、引入相关的类
2、创建一个BufferedWriter对象
FileWriter fw = new FileWriter(Path,文件地址);
BufferedWriter bw = new BufferedWriter(fw);
3、利用BufferedWriter类的方法写文本文件。
bw.writer(“hello”);
4、关闭流对象的清空和刷新
bw.flush();
fw.close();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值