Если вы создаете свою программу из командной строки, то вы можете использовать так называемое «перенаправление ввода». Вот как это работает:
Предположим, ваша программа:
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 ());
}
}
Этот подход читает непосредственно из файла и помещает строки из файла в список String.
Другой подход
Вы также можете прочитать строки из файла и сохранить их в списке в одной строке, как показано в следующем фрагменте кода:
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));
}
}
Йоханес Хосиаван ответил на другой подход, поэтому я не пишу его здесь.
person
Aman Agnihotri
schedule
21.11.2014
Scanner scanner = new Scanner(Paths.get(<file path in string here>));
. Также используйтеStringBuilder
для добавления строк вb
, посколькуString
является неизменяемым, поэтому производительность будет снижена, если вы сделаете для него+=
. - person Aman Agnihotri   schedule 21.11.2014