Java inputStream和outputStream [已关闭]

bkhjykvo  于 2023-06-28  发布在  Java
关注(0)|答案(1)|浏览(111)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

昨天关门了。
Improve this question
程序应该询问用户输入文件名和输出文件名。然后,它应该将输入文件作为文本文件打开(使用try块检查输入文件是否存在),并逐行读取内容。它还应该以文本文件的形式打开输出文件,并将输入文件中的行写入其中,以从1开始的行号作为前缀。因此,如果名为“fred.txt”的输入文件包含:
你好
我是弗雷德。
我是ICT167的学生。
再见
用户输入“fred.txt”和“fredNum.txt”,然后运行程序后“fredNum.txt”将包含如下内容:
1您好,
2
3我是弗雷德。
4我在ICT167注册。
5
6再见
最后,程序应该在屏幕上显示你的名字,输出文件的名称,然后是输入文件的总行数,总字数和总字符数。对于上述输入文件,屏幕将显示以下内容:
我叫乔·布洛格斯
输出文件的名称= fredNum.txt
fred.txt中的总行数= 6
fred.txt中的总字数= 10
fred.txt中的字符总数= 43

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ReadInputFile {

    public static void main(String[] args) {
        System.out.println("My Name = David");
        
        System.out.println("Enter file name:");
        Scanner Keyboard = new Scanner(System.in);
        String fileName = Keyboard.next();
        System.out.println("Name of Output file " + fileName);
        Scanner inputStream = null;
        System.out.println("The file " + fileName + " contains the following lines:");
        
        try {
            inputStream = new Scanner(new File(fileName));
        } catch (FileNotFoundException e) {
            System.out.println("Error opening the file " + fileName);
            System.exit(0);
        }
        while (inputStream.hasNextLine()) {
            String line = inputStream.nextLine();
            System.out.println(line);
        }
        inputStream.close();
    } // end main
    }
gywdnpxw

gywdnpxw1#

  • "...程序应该询问用户输入文件的名称和输出文件的名称。..."*

您当前只要求输入一个文件名。

System.out.println("Enter file name:");
Scanner Keyboard = new Scanner(System.in);
String fileName = Keyboard.next();

您可以添加另一个变量和输入。

String outputFileName = Keyboard.next();
  • "...然后,它应该将输入文件作为文本文件打开(使用try块检查输入文件是否存在),并逐行读取内容。..."*

你已经有了这个,它工作正常。

  • "...它还应该将输出文件作为文本文件打开,并将输入文件中的行写入其中..."*

要写文件,可以使用 * FileWriter * 类。
您可以将赋值放在 * try-finally * 块中,以确保它正确关闭。
而且,你也可以在这里关闭 * inputStream *。

FileWriter writer = null;
try {
    writer = new FileWriter(outputFileName);
    while (inputStream.hasNextLine()) {
        String line = inputStream.nextLine();
        System.out.println(line);
    }
} finally {
    writer.close();
    inputStream.close();
}
  • "...前缀为从1开始的行号..."*
  • "...程序应显示在屏幕上...输入文件中的总行数、总字数和总字符数的计数。..."*

对于行数,只需创建一个新变量来保存值,并在 * while-loop * 中将其递增 * 1
要计算单词的数量,您可以使用 * String #split * 方法返回一个 * String * 数组,使用 * 空格 * 作为分隔符。
例如,这将返回 "I am Fred." 作为三个字符串的数组,
"I""am"* 和 "Fred."

int words = line.split(" ").length;

要计算字符数,可以使用 * String #toCharArray * 方法获取值。

int characters = line.toCharArray().length;

下面是完整的代码。

public static void main(String[] args) throws IOException {
    System.out.println("My Name = David");

    System.out.println("Enter file name:");
    Scanner Keyboard = new Scanner(System.in);
    String fileName = Keyboard.next();
    System.out.println("Enter output file name:");
    String outputFileName = Keyboard.next();
    System.out.println("Name of Input file " + fileName);
    System.out.println("Name of Output file " + outputFileName);
    Scanner inputStream = null;
    System.out.println("The file " + fileName + " contains the following lines:");

    try {
        inputStream = new Scanner(new File(fileName));
    } catch (FileNotFoundException e) {
        System.out.println("Error opening the file " + fileName);
        System.exit(0);
    }
    FileWriter writer = null;
    int count = 0, words = 0, characters = 0;
    try {
        writer = new FileWriter(outputFileName);
        while (inputStream.hasNextLine()) {
            String line = inputStream.nextLine();
            count++;
            if (!line.isEmpty()) {
                words += line.split(" ").length;
                characters += line.toCharArray().length;
            }
            writer.write(count + " " + line);
            writer.write(System.lineSeparator());
        }
    } finally {
        writer.close();
        inputStream.close();
    }
    System.out.println("My name = Joe Bloggs");
    System.out.println("Name of Output file = " + outputFileName);
    System.out.println("Total number of lines in fred.txt = " + count);
    System.out.println("Total number of words in fred.txt = " + words);
    System.out.println("Total number of characters in fred.txt = " + characters);
} // end main

下面是一个输入和输出的例子。

My Name = David
Enter file name:
fred.txt
Enter output file name:
fredNum.txt
Name of Input file fred.txt
Name of Output file fredNum.txt
The file fred.txt contains the following lines:
My name = Joe Bloggs
Name of Output file = fredNum.txt
Total number of lines in fred.txt = 7
Total number of words in fred.txt = 10
Total number of characters in fred.txt = 43

这里是 * fredNum.txt * 的内容。

相关问题