met*_*tis 0 java io outputstream
以下代码引自: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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
仅仅因为声明的类型是OutputStream,并不意味着实现不会创建的具体子类的实例OutputStream。您始终可以通过界面看到这一点。例如:
public List<String> getList() {
return new ArrayList<String>();
}
Run Code Online (Sandbox Code Playgroud)
基本上,您需要区分公开的API(使用抽象类)和实现(可以选择使用所需的任何子类)。
因此Files.newOutputStream可以实现为:
public static OutputStream newOutputStream(Path path)
throws IOException {
return new FileOutputStream(path.toFile());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2406 次 |
| 最近记录: |