Java 在输入文本文件上写入行号
我需要写一个程序,将产生一个新的文件,其中每行文字有一个行号,给定一个没有行号的输入文件。例如: 给定行: 十六 输出线: 1 | 16 行号的格式为3个空格右对齐,后面是一个|字符,前面有一个空格 和之后,然后是该行中的文本Java 在输入文本文件上写入行号,java,Java,我需要写一个程序,将产生一个新的文件,其中每行文字有一个行号,给定一个没有行号的输入文件。例如: 给定行: 十六 输出线: 1 | 16 行号的格式为3个空格右对齐,后面是一个|字符,前面有一个空格 和之后,然后是该行中的文本 public class LineNumbers { public static void process(File input, File output) { Scanner scanner; PrintWriter writer; try {
public class LineNumbers {
public static void process(File input, File output) {
Scanner scanner;
PrintWriter writer;
try {
scanner = new Scanner(input);
} catch (FileNotFoundException e) {
return;
}
try {
writer = new PrintWriter(output);
} catch (FileNotFoundException e) {
return;
}
for (int i = 1; scanner.hasNextLine(); i++) {
String s1 = scanner.nextLine();
String s2 = " " + i + " | " + s1;
writer.print(s2);
}
scanner.close();
writer.close();
}
}
这是我的代码,其中字符串s2==我需要的输出,但我如何将其转换为输出文件
*****编辑*****
这是需要运行的测试之一,其中文件中只输入一行。但是,在测试仪中,行号前面只有两个空格,当我更改代码以匹配时,测试通过。所有其他的测试人员都是以类似的方式编写的,我认为这可能是导致问题的原因
@Test
public void testOneLine() {
try {
// create file
File input = folder.newFile( "input.txt" );
File output = folder.newFile( "output.txt" );
PrintWriter write = new PrintWriter( input );
write.println( "Lorem ipsum dolor sit amet, consectetur adipiscing elit." );
write.close();
// invoke program
LineNumbers.process( input, output );
// verify file results
assertTrue ( "Output file does not exist", output.exists() );
Scanner scan = new Scanner( output );
String[] result = new String[] {
" 1 | Lorem ipsum dolor sit amet, consectetur adipiscing elit."
};
for (String expected : result) {
if (scan.hasNext()) {
String actual = scan.nextLine();
assertEquals( "Incorrect result", expected, actual );
}
else {
fail( String.format( "Unexpected end of file: expected \"%s\"", expected ));
break;
}
}
assertFalse ( "File contains more data than expected", scan.hasNext() );
scan.close();
}
catch (IOException e) {
fail( "No exception should be thrown" );
}
}
行号前面的空格太多。当您被告知在三个空格中提供行号时,其格式应如以下示例之一所示: __一, _二十二 333
所以总共有三个字符,包括所有空格。您已经这样做了。问题是什么?如果你能告诉我问题出在哪里,@AlexIt没有通过我的JUnit测试,我不知道为什么。我认为这个测试可能写得不正确,但仔细看看。有没有一种方法可以使用printf来编写输出文件?你能发布测试和失败吗?你想让我发布整个测试文件吗?它有400多行