将文件输入Java以创建新的输出文件

时间:2018-12-06 16:14:29

标签: java

我正在一个项目中,我们必须用一首诗或一首歌创建一个输入文件,并且应该使用该文件来创建一个程序,该程序创建一个输出文件,并用行号更新输入文件。这是一个示例:如果输入文件是:Mary有点小羊羔,则输出文件应类似于:/ * 1 * / Mary有点小羊羔。代码应为每一行执行此操作,以增加每一行的编号。下面是到目前为止的代码,但是我不确定下一步该怎么做。

package morrisJCh7Sec2;

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

public class PoemTextFile {
    public static void main(String args[]) throws FileNotFoundException {
        File inputFile = new File("poem.txt");
        Scanner input = new Scanner(inputFile);
        PrintWriter outputFile = new PrintWriter("numpoem.txt");

        outputFile.printf("Read in %s. \nWrote out %s.", inputFile, outputFile);
        input.close();
        outputFile.close();
    }
}

这就是我的任务。我已经创建了文本文件,但是当我按现在的方式运行代码时,它说找不到我创建的文件。

  

使用诗歌或歌曲歌词创建文本文件。 (如果您无法想到   一首诗或一首歌,请使用玛丽的小羊羔。)   或文本文件一行上的歌曲。注意你的拼写   和标点符号。将此文件用作输入文件。编写代码以阅读   输入文件中的每一行。使用以下命令将每一行写入输出文件   行之前的行号。请务必遵循此示例   行号的格式。

这是我收到的错误:

  

线程“主”中的异常java.io.FileNotFoundException:poem.txt   (系统找不到指定的文件)在   java.io.FileInputStream.open0(本机方法)位于   java.io.FileInputStream.open(未知源)   java.io.FileInputStream。(未知源)   java.util.Scanner。(未知源)在   morrisJCh7Sec2.PoemTextFile.main(PoemTextFile.java:11)​​

1 个答案:

答案 0 :(得分:0)

您很近。 只需遍历文本行即可:

    File inputFile = new File("poem.txt");
    Scanner input = new Scanner(inputFile);
    input.useDelimiter("\n");
    PrintWriter outputFile = new PrintWriter("numpoem.txt");
    int count = 0;

    while(input.hasNext()) {
        outputFile.print("/* " + count++ + " */ " + input.next() + "\n");
    }

    input.close();
    outputFile.close();

定界符\n(换行符)确保扫描程序读取的每个新数据块都是文本文件中的一行。 while循环运行,直到没有更多的行可供读取。然后,将行写入目标文件,使用计数变量添加行号,该计数变量每行增加++。如果要从1开始计数,只需更改count的初始值即可。