Java 如何通过读取文件来获取以空格分隔的字符串流?

Java 如何通过读取文件来获取以空格分隔的字符串流?,java,file,java-stream,Java,File,Java Stream,我试图读取一个文本文件,并在其中获得一个字流。我所说的单词,只是指以空格分隔的字符串。我知道Java有Files.lines()方法,它提供了一个流,但这是一个行流。我希望通过用空格分割每一行来对这个流进行后期处理。但以下代码: 返回Files.lines(Path.of(filename)).map((line)->line.split(“”); 给我一个编译错误: Type mismatch: cannot convert from Stream<Object> to Stre

我试图读取一个文本文件,并在其中获得一个字流。我所说的单词,只是指以空格分隔的字符串。我知道Java有
Files.lines()
方法,它提供了一个
,但这是一个行流。我希望通过用空格分割每一行来对这个流进行后期处理。但以下代码:

返回Files.lines(Path.of(filename)).map((line)->line.split(“”);
给我一个编译错误:

Type mismatch: cannot convert from Stream<Object> to Stream<String>Java(16777235)
类型不匹配:无法从Stream转换为StreamJava(16777235)

我需要在这里执行一些强制转换来流化,还是有更好的方法来获取字流?

String.split
返回一个数组。您可以使用
flatMap
将阵列封装到流中并连接它们:

Stream<String> words = Files.lines(Path.of(filename))
    .map(line -> line.split(" "))
    .flatMap(Arrays::stream);
     
streamwords=Files.line(Path.of(filename))
.map(直线->直线分割(“”)
.flatMap(数组::流);

为其他两个答案添加更多备选答案

        Stream<String> stream = Arrays.stream(Files.readString(Paths.get(filename)).split(" "));

这是一种更有效的方法,因为扫描仪会自然读取,直到它到达一个空间。

无需两步。你可以使用一个
.platmap(line->line.split(“”))
代替
.map(line->Arrays.stream(line.split(“”))
@Holger当然可以,但是我认为,如果要问的人把它们分开,会更清楚。
    try{
        Scanner s = new Scanner(new File(filename));
        while(s.hasNext()){
            String string = s.next();
            list.add(string);
        }
    }catch(Exception e){

    }