我的任务如下:
编写一个程序,该程序读取附加的文本文件并写出单独的文本文件(使用名字的名字和姓氏作为文件名)。新的文本文件应包含与输入文件相同的所有文本行,并附加一个行号作为该行的第一个字符。
例如:如果您的输入行显示为:
这是一个测试
您的输出应为
- 这是一个测试
我已经写了我认为主要是功能代码的代码-运行时会编译并创建要写入的新文件,但是该文件为空白(包含0个字节)。阅读有关该问题的信息后,我尝试确保已关闭/清除了我的printWriter和输入/输出流。我现在不确定循环是否有问题或在错误的位置调用了close方法。任何帮助表示赞赏。
代码如下:
package module6lecture;
import java.util.Scanner;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class ReadWriteProgram {
public static void main(String[] args) {
try
{
FileInputStream fis = new FileInputStream("C:\\Users\\Reid\\Desktop\\Chapter11.txt");
FileOutputStream fos = new FileOutputStream("C:\\Users\\Reid\\Desktop\\rulicny.txt");
Scanner scan = new Scanner(fis);
PrintWriter pw = new PrintWriter(fos);
int lineNumber = 1;
while(scan.hasNextLine());
{
String stringRead = scan.nextLine();
pw.println(lineNumber + ": " + stringRead);
lineNumber++;
}
pw.close();
}
catch(FileNotFoundException fnf)
{
System.out.println("Unable to find Chapter11.txt. Exiting...");
fnf.printStackTrace();
}
}
}
免责声明:我是新手。
while循环后有分号
while(scan.hasNextLine());
// ^
这使其成为无限循环,因为它表示空指令,就像
while(scan.hasNextLine()){}
所以你永远不会真正进入
{
String stringRead = scan.nextLine();
pw.println(lineNumber + ": " + stringRead);
lineNumber++;
}
块,然后编写代码,这意味着您没有在结果文件中写入任何内容,甚至没有关闭它。使用创建的空文件时所拥有的一切
FileOutputStream fos = new FileOutputStream("C:\\Users\\Reid\\Desktop\\rulicny.txt");
因此,请删除该分号。
顺便说一句,如果让您使用IDE格式代码,则可以轻松发现此类错误。Eclipse将您的示例格式化为
while (scan.hasNextLine())
;
{
String stringRead = scan.nextLine();
pw.println(lineNumber + ": " + stringRead);
lineNumber++;
}
如您所见,这表明您的循环实际上执行了空语句而不是代码块,这非常好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句