Java程序员_编程开发学习笔记_网站安全运维教程_渗透技术教程

Java 文件读写与删除实战解析:File流操作与命令行参数

阿贵
4天前发布 /正在检测是否收录...
温馨提示:
本文最后更新于2025年08月31日,已超过4天没有更新,若内容或图片失效,请留言反馈。

Java 文件读写与删除实战解析:File流操作与命令行参数

82.png

一、原题完整代码呈现

以下是计算机二级Java考试中关于文件IO操作的典型题型,主要考察命令行参数使用、文件流创建、内容读写及文件删除,包含4处需要填写的空白(标记为//*********Found**********):

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Java_2
{
   public static void main(String args[])
   {
      if(args.length<2)
      {
         System.out.println("ERROR: need parameters.");    
         System.out.println("\n -usage: java <classname> <file1> <file2>");    
         System.exit(0);
      }
      File f1=new File(args[0]);
      //*********Found**********
      File f2=new File(_____________________);
      try
      {
         //*********Found**********
         FileReader fr=new FileReader(______________________);
         FileWriter fw=new FileWriter(f1,true);
         int b;
         //*********Found**********
         while(( b=fr.read() ) != -1 )  fw.write(_____________________);
         fr.close();
         fw.close();
      }
      catch(IOException e)
      {
         e.printStackTrace();
      }
      System.out.println("has done!");
      //*********Found**********
      if(f2.delete()) System.out.print("___________");
   }
}

二、空白处逐一解析与解答

1. 第一处空白:创建第二个文件对象

答案:args[1]

//*********Found**********
File f2=new File(args[1]);

解析
程序通过命令行参数接收两个文件名(args[0]args[1])。f1已关联args[0](目标文件),f2需关联args[1](源文件,后续会读取其内容并删除)。File类通过构造方法接收文件路径字符串,因此填写args[1]

2. 第二处空白:创建源文件的读取流

答案:f2

//*********Found**********
FileReader fr=new FileReader(f2);

解析
FileReader用于读取文件内容,需关联源文件(f2)。程序逻辑是将f2的内容写入f1,因此读取流fr需以f2为参数创建,填写f2

3. 第三处空白:写入读取到的字节

答案:b

//*********Found**********
while(( b=fr.read() ) != -1 )  fw.write(b);

解析
fr.read()返回读取到的字节(int类型,范围0-255,-1表示读取结束),存储在变量b中。fw.write(int c)方法将字节b写入目标文件f1,因此填写b

4. 第四处空白:删除成功的提示信息

答案:file2 deleted

//*********Found**********
if(f2.delete()) System.out.print("file2 deleted");

解析
f2.delete()返回boolean值(true表示删除成功)。若删除成功,需输出提示信息,结合程序逻辑(删除f2),合理提示为“file2 deleted”,因此填写该字符串。

三、完整正确代码

四、程序功能与运行说明

程序功能

该程序实现文件内容的追加与源文件删除,核心功能包括:

  1. 检查命令行参数(需提供2个文件名),参数不足则提示用法并退出
  2. 关联两个文件:f1为目标文件(接收内容),f2为源文件(提供内容)
  3. 读取f2的内容,追加到f1FileWriter(f1,true)中的true表示追加模式)
  4. 操作完成后删除f2,并在删除成功时输出提示
运行说明
  1. 运行准备:
    需在命令行中提供两个文件名(如file1.txtfile2.txt),其中file2.txt需预先存在并包含内容。
  2. 执行命令:

    java Java_2 file1.txt file2.txt
  3. 执行流程:

    • 检查参数:若参数不足,输出ERROR: need parameters.及用法提示
    • 读写内容:将file2.txt的所有内容追加到file1.txt末尾
    • 清理操作:删除file2.txt,若成功则输出file2 deleted
    • 最终提示:无论删除是否成功,均输出has done!
  4. 示例结果:
    file2.txt存在且操作成功,输出:

    has done!
    file2 deleted

五、核心知识点总结

  1. 命令行参数的使用

    • main方法的String[] args参数用于接收命令行输入的参数,索引从0开始
    • 程序先检查args.length<2:确保提供足够参数(目标文件和源文件),否则提示用法(-usage: java <classname> <file1> <file2>
    • 参数作用:args[0]是内容接收文件,args[1]是内容提供文件(后续被删除)
  2. 文件流的创建与操作

    • File类:用于表示文件或目录的路径,不直接操作文件内容,仅作为流的操作对象
    • FileReader:字符输入流,用于读取文本文件内容,read()方法返回单个字符(int类型),-1表示读取结束
    • FileWriter:字符输出流,用于写入文本文件内容:

      • 构造方法FileWriter(File file, boolean append)中,appendtrue时表示追加内容(不覆盖原有内容)
      • 需调用close()方法关闭流,释放资源(也可使用try-with-resources自动关闭)
  3. 文件内容读写逻辑

    • 循环读取:while((b=fr.read()) != -1)循环读取f2的每个字符,直到文件末尾(-1
    • 写入内容:fw.write(b)将读取到的字符b写入f1,实现内容复制
    • 注意:此逻辑适用于文本文件,二进制文件需使用FileInputStreamFileOutputStream
  4. 文件删除操作

    • File.delete()方法:删除文件或空目录,返回boolean值(true表示成功,false表示失败,如文件不存在、被占用等)
    • 本题中删除f2的目的:完成内容迁移后清理源文件,避免冗余

六、常见错误与应试技巧

  1. 常见错误分析

    • 第一处空白参数索引错误:写成args[0]f1f2指向同一文件,导致读写冲突)或args[2](参数越界,数组索引错误)
    • 第二处空白流关联错误:写成f1(读取目标文件,逻辑颠倒)或args[1](直接使用路径字符串,虽语法正确但不符合面向对象思想)
    • 第三处空白写入参数错误:写成fr.read()(重复读取,导致字符丢失)或"b"(写入字符串"b",而非读取的字节)
    • 第四处空白提示信息错误:写成f2.getName()(仅输出文件名,无操作结果提示)或拼写错误(如file2 delete缺少过去分词)
  2. 应试技巧

    • 参数处理口诀:"命令行参数要检查,长度不够提示它,args[0]、args[1]分清楚,源文件和目标别搞差"
    • 流操作口诀:"读用Reader写用Writer,关联文件要正确,循环读取到-1,逐个写入不丢失"
    • 文件删除:"delete()方法返布尔,成功失败能看出,提示信息要明确,操作结果心有数"
    • 调试技巧:添加文件存在性检查(f2.exists()),避免因源文件不存在导致的FileNotFoundException

通过本题,我们掌握了命令行参数的处理、文件字符流的读写操作及文件删除的基本逻辑。文件IO是Java编程的基础技能,理解流的创建与资源释放对处理文本文件交互具有重要意义。

喜欢就支持一下吧
点赞 0 分享 收藏
评论 抢沙发
OωO
取消 登录评论