如果您是从命令行构建程序,那么您可以使用一种称为“输入重定向”的东西。以下是它的工作原理:
假设您的程序是:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ScanningMultiline
{
public static void main (String[] args)
{
List<String> lines = new ArrayList<> ();
try (Scanner scanner = new Scanner (System.in))
{
while (scanner.hasNextLine ())
{
lines.add (scanner.nextLine ());
}
}
System.out.println ("Total lines: " + lines.size ());
}
}
现在假设您已经在一个文件中为您的程序准备了输入。
要编译程序,您需要将终端/命令提示符的当前目录更改为程序目录,然后编写:
javac ScanningMultiline.java
然后运行,使用输入重定向,如:
java ScanningMultiline < InputFile.txt
如果您InputFile.txt
在另一个目录中,只需将其完整路径改为:
java ScanningMultiline < "/Users/Xyz/Desktop/InputFile.txt"
另一种方法
您可以尝试直接从文件中读取输入。以下是该程序的编写方式:
import java.io.IOException;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ScanningMultiline
{
public static void main (String[] args)
{
final String inputFile = "/Users/Xyz/Desktop/InputFile.txt";
List<String> lines = new ArrayList<> ();
try (Scanner scanner = new Scanner (Paths.get (inputFile)))
{
while (scanner.hasNextLine ())
{
lines.add (scanner.nextLine ());
}
}
catch (IOException e)
{
e.printStackTrace ();
}
System.out.println ("Total lines: " + lines.size ());
}
}
这种方法直接从文件中读取,并将文件中的行放入字符串列表中。
另一种方法
您可以从文件中读取行并将它们存储在单行的列表中,如以下代码段所示:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
public class ScanningMultiline
{
public static void main (String[] args) throws IOException
{
final String inputFile = "/Users/Xyz/Desktop/InputFile.txt";
List<String> lines = Files.readAllLines (Paths.get (inputFile));
}
}
Yohanes Khosiawan 已经回答了一种不同的方法,所以我不在这里写那个。