本文共 1300 字,大约阅读时间需要 4 分钟。
展开全部
没什么区别,只是不同的重载而已,最终都是调用32313133353236313431303231363533e58685e5aeb931333365663562的OutputStreamWriter的构造方法,可查看源码验证。之所以有两种构造方法,是为了方便调用者使用不同类型的参数构造对象。
源码如下:public FileWriter(String fileName) throws IOException {
super(new FileOutputStream(fileName));
}
public FileWriter(File file) throws IOException {
super(new FileOutputStream(file));
}
可以发现最终都是调用父类相同的构造方法:public OutputStreamWriter(OutputStream out) {
super(out);
try {
se = StreamEncoder.forOutputStreamWriter(out, this, (String)null);
} catch (UnsupportedEncodingException e) {
throw new Error(e);
}
}
再看FileOutputStream的构造方法:public FileOutputStream(File file) throws FileNotFoundException {
this(file, false);
}
public FileOutputStream(String name) throws FileNotFoundException {
this(name != null ? new File(name) : null, false);
}
可以看到最终也调用了同一个构造方法:public FileOutputStream(File file, boolean append)
throws FileNotFoundException
{
String name = (file != null ? file.getPath() : null);
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkWrite(name);
}
if (name == null) {
throw new NullPointerException();
}
if (file.isInvalid()) {
throw new FileNotFoundException("Invalid file path");
}
this.fd = new FileDescriptor();
fd.attach(this);
this.append = append;
this.path = name;
open(name, append);
}
转载地址:http://cmqms.baihongyu.com/