[英]How to read a file and split the text by each line?
我需要阅读一个看起来像这样的文本文件
8 7
~~~~~~~
~~~~~~~
B~~~~~~
~~~~~~~
~~~~B~~
~~~~B~~
~~~~~~B
~~~~~~~
~~~~~~~
我的程序正在重新创建战舰游戏。 我需要接受值8和7,但只能从第二行开始打印。 我应该使用string.split(我相信)。 我只需要打印带有〜和B的行。 我已经有读取文件的代码,只是不确定如何通过换行符分割文件。
File file = new File(args[1]);
try
{
Scanner sc = new Scanner(file);
while (sc.hasNextLine())
{
String themap = sc.nextLine();
System.out.println(themap);
}
sc.close();
}
catch (Exception e)
{
System.out.println("ERROR: File does not exist");
}
您已经在使用sc.nextLine()逐行读取它。 它将逐行读取文件。 无需使用split来获取每一行。 为了证明更改您的println语句以向您知道的每一行添加内容,这不在文件中。
System.out.println( "Yaya " + themap );
如果在运行程序时在每一行的前面看到Yaya,则说明您正在逐行读取它,并且在每次循环时,map都指向文件外的一行。
之后,您只需要在该行中搜索以找到B和8,然后将它们提取到另一个数据结构中即可。 有很多方法可以做到这一点,但是请检查String api,以获取有助于解决问题的方法。
使用Java 8 Paths
, Path
, Files.readAllLines
和流(输入在/tmp/layout.txt
):
package stackoverflow;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
public class StackOverflow {
public static void main(String[] args) throws IOException {
Path layout = Paths.get("/tmp", "layout.txt");
List<String> lines = Files.readAllLines(layout);
lines.remove(0); // Don't print the first line.
lines.stream().forEach(System.out::println);
}
}
如果您不能使用Java 8,请使用
for (String line : lines) {
System.out.println(line);
}
代替
lines.stream().forEach(System.out::println);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.