You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java文件转大写程序中添加姓名行与日期行?

Java程序:给转大写的输出文件首尾添加姓名和日期

你的代码现在有个核心问题:第一个while(fileToScan.hasNext())循环把输入文件的内容全读完了,Scanner指针移到了文件末尾,第二个循环根本跑不起来,所以输出文件convertToUpper.txt里不会有原文件的内容。要实现首尾加内容的需求其实很简单——因为我们是新建输出文件,直接控制写入顺序就行:

修改后的完整代码

/*
 * 2/16/24
 * Purpose of this program is to convert contents of a file to upper case letters.
 */

package UpperCaseFileConverter;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import java.io.PrintWriter;
import java.time.LocalDate; // 用于获取当前日期

public class UpperCaseFileConverter {

    public static void main(String[] args) throws IOException 
    {    
        Scanner scanner = new Scanner(System.in);
        
        String userFileName;
          
        // 获取文件名
        System.out.print(" Enter the Filename: ");
        userFileName = scanner.nextLine();
               
        // 检查文件是否存在
        File file = new File(userFileName);
        while(!file.exists()) {
             System.out.print(userFileName + " does not exist. Please re-enter the file name\n"
             + "remember for this example we are using \"convert.txt\"" );
             userFileName = scanner.nextLine();
             file = new File(userFileName);
        }
        
        Scanner fileToScan = new Scanner(file);
        PrintWriter fileToWrite = new PrintWriter("convertToUpper.txt");
        
        // 1. 在输出文件开头写入你的姓名
        String yourName = "你的姓名"; // 替换成你的实际姓名
        fileToWrite.println(yourName);
        
        // 读取原文件内容,转大写后同时输出到控制台和写入文件
        while(fileToScan.hasNextLine()) {
            String line = fileToScan.nextLine().toUpperCase();
            System.out.println(line); // 控制台测试输出
            fileToWrite.println(line); // 写入输出文件
        }
        
        // 2. 在输出文件末尾写入日期(这里用当前系统日期,也可以手动指定)
        String currentDate = LocalDate.now().toString(); // 格式为YYYY-MM-DD,也可以自定义格式
        // 如果要手动指定日期,比如"2/16/24",就改成 String currentDate = "2/16/24";
        fileToWrite.println(currentDate);
        
        System.out.println("Contents have been converted to upper case and saved in convertToUpper.txt");
        fileToWrite.close();
        fileToScan.close();
        scanner.close(); // 别忘了关闭用户输入的Scanner
    }
}

关键说明

  • 开头加姓名:PrintWriter是从文件起始位置开始写入的,所以在处理原文件内容前,先调用fileToWrite.println(yourName),这行内容就会成为输出文件的第一行。
  • 末尾加日期:等原文件所有内容处理并写入完成后,再调用fileToWrite.println(currentDate),这行内容会自动追加到文件最后。
  • 修复原代码的写入问题:把两个while循环合并成一个,一次读取一行,同时完成控制台输出和文件写入,避免Scanner被耗尽导致后续循环无内容可读。
  • 日期处理:用LocalDate.now()可自动获取当前系统日期,如果你需要固定日期,直接替换成目标字符串即可。

内容的提问来源于stack exchange,提问作者TheBigDookie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 23:26:11