选择子类:FileOutputStream 文件输出字节流
看到的是d 说明会查询ASCII表
写入记事本时,一个字母是一个字节
public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream("e:\\asd.txt");
byte[] bytes = "请叫GIAO".getBytes();
fos.write(bytes);
fos.close();
}
1.构造方法
// 构造方法的本质都是先判断要创建的File存不存在,然后在判断要不要追加
// 1.File为参数
public FileOutputStream(File file) throws FileNotFoundException {
this(file, false);
}
// 2.String为参数 方法1和方法2都是默认不追加,直接覆盖
public FileOutputStream(String name) throws FileNotFoundException {
this(name != null ? new File(name) : null, false);
}
// 3.String 和append 2个参数
public FileOutputStream(String name, boolean append)
throws FileNotFoundException
{
this(name != null ? new File(name) : null, append);
}
// 4.前三个最终,都是调用第四个构造方法
public FileOutputStream(File file, boolean append)
throws FileNotFoundException
{
String name = (file != null ? file.getPath() : null);
@SuppressWarnings("removal")
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.path = name;
open(name, append);
FileCleanable.register(fd); // open sets the fd, register the cleanup
}
2.换行输入
Win10写\n或者\r也可以
public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream("e:\\asd.txt",true);
byte[] bytes = "披荆\r\n".getBytes();
fos.write(bytes);
fos.close();
}
3.异常处理(try catch处理)
将对数据流的操作用try catch来处理,并且close要写在finally中,并且还y要包try catch
问题:为什么要把close放在finally中
解答:如果把close()放在位置1,如果上面操作数据流出现错误,直接走到catch中,close就被跳过不执行了。
public static void main(String[] args) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream("m:\\asd.txt", true);
byte[] bytes = "披荆\r\n".getBytes();
fos.write(bytes);
// 位置1 fos.close();
}catch (IOException e){
e.printStackTrace();
}finally {
try {
if((fos != null)){
fos.close();
}
} catch (IOException ex){
ex.printStackTrace();
}
}
}