【问题标题】:Why does this Java code not convert files? [closed]为什么这个 Java 代码不转换文件? [关闭]
【发布时间】:2019-08-18 19:27:25
【问题描述】:

编写一个读取文本文件并将内容写入新文件的 Java 程序。在读写过程中,将所有大写字母转换为小写字母。换句话说,您的编程任务是创建一个与原始文件内容相同的新文件,只是在新文件中将所有大写字母转换为小写字母

当我运行此代码时,无论它显示的文件名如何,它都不存在。我创建了一个名为input.txt 的文件,它应该将数据转换为所有小写字母。

import java.io.*;
import java.util.Scanner;

public class UpperCaseFileConverter
{
    public static void main(String[] args) throws IOException
    {

    Scanner scanner = new Scanner(System.in);
    String userFileName;

    System.out.println( "Please enter file name. Please enter \"input.txt\" ");
    userFileName = scanner.nextLine();

    File file = new File(userFileName);

    while(!file.exists() )
    {
        System.out.println( userFileName + " does not exist. Please try again.Please enter \"input.txt\" ");
        userFileName = scanner.nextLine();
        file = new File(userFileName);
    }

    Scanner fileToScan = new Scanner(file);
    PrintWriter fileToWrite = new PrintWriter ("OUTPUT.TXT");

    while(fileToScan.hasNext() )
    {
        fileToWrite.println( fileToScan.nextLine().toLowerCase() );
    }

    fileToWrite.close();
    fileToScan.close();
    }
}

输出应该创建一个新文件,但它只是一直说文件不存在。

【问题讨论】:

  • 那么,文件在哪里?调试您的代码,通过获取其绝对路径并将其与文件的实际位置进行比较,检查 file 的实际路径。
  • 请注意hasNextnextLine 之间不匹配。 hasNextnext 配对,hasNextLinenextLine 配对。
  • 这段代码没有任何问题,这意味着它不会读取该文件 - 它按预期对我有用。您可能将文件放在错误的位置。 (执行System.out.println(new File("").getAbsolutePath()); 以找到它期望的目录。)
  • 停止编辑问题。你问了这个问题,如果这解决了你的问题,请接受一个答案,但不要显着改变问题,否则模组会参与其中。

标签: java oop uppercase lowercase converters


【解决方案1】:

当您在 IDE 中运行代码时,代码实际上不会在保存 Java 文件的文件夹运行。相反,它可能会在当前目录设置为整个项目的根文件夹的情况下运行。

你可以通过运行并打印new File(".").getAbsolutePath()的返回值来获取当前工作目录的值。这将告诉您将 input.txt 放在哪里以及 output.txt 将被保存在哪里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 2014-02-20
    • 2012-09-30
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多