gpt4 book ai didi

java - OutputStream 类用于写入文件。这怎么可能?

转载 作者:行者123 更新时间:2023-12-01 16:57:20 24 4
gpt4 key购买 nike

以下代码引用自:http://examples.javacodegeeks.com/core-java/io/fileoutputstream/java-io-fileoutputstream-example/

虽然OutputStream是一个抽象方法,但在下面的代码中,OutputStream对象用于写入文件。

Files.newOutputStream(filepath)) 返回 OutputStream。那么,out的类型是OutputStream,out引用OutputStream。

OutputStream 是一个抽象类,这怎么可能?

package com.javacodegeeks.core.io.outputstream;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class FileOutputStreamExample {

private static final String OUTPUT_FILE = "C:\\Users\\nikos\\Desktop\\TestFiles\\testFile.txt";
public static void main(String[] args) {

String content = "Hello Java Code Geeks";

byte[] bytes = content.getBytes();

Path filepath = Paths.get(OUTPUT_FILE);

try ( OutputStream out = Files.newOutputStream(filepath)) {

out.write(bytes);

} catch (IOException e) {
e.printStackTrace();
}
}
}

最佳答案

仅仅因为声明的类型是OutputStream,这并不意味着实现不会创建具体子类的实例输出流。您在界面中经常会看到这种情况。例如:

public List<String> getList() {
return new ArrayList<String>();
}

基本上,您需要区分公开的 API(使用抽象类)和实现(可以选择使用它想要的任何子类)。

因此 Files.newOutputStream 可以实现为:

public static OutputStream newOutputStream(Path path)
throws IOException {
return new FileOutputStream(path.toFile());
}

关于java - OutputStream 类用于写入文件。这怎么可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30968453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com