一、IO流:存储和读取数据的解决方案
1.输入流:文件->程序
2.输出流:程序->文件
3.IO流按照操作文件的类型可以分为:
字节流:可以操作所有类型的文件
字符流:只可以操作纯文本文件
4.纯文本文件:用Windows系统自带的记事本打开并且能读懂的文件
例如:txt文件、md文件、xml文件、lrc文件等
(图片来自哔站黑马程序员)
二、FileOutputStream:操作本地文件的字节输出流,可以把程序中的数据写到本地文件中
书写步骤:
①创建字节输出流对象;
细节1:参数是字符串表示的路径或者是File对象都是可以的
细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的节san
细节3:如果文件已经存在,则会清空文件
②写数据;
细节1:write方法的参数是整数,但是实际上写到本地文件中的是整数在ASCII上对应的字符
③释放资源
细节:每次使用完流之后
练习:写出一段文字到本地文件中
package a01bytestreamdemo;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteStreamDemo1 {
public static void main(String[] args) throws IOException {
//写出一段文字到本地文件中
FileOutputStream fos=new FileOutputStream("Test\\a.txt");
//2.写出数据
fos.write(97);
fos.close();
}
}
运行结果:
三、 FileOutputStream写数据的三种方式
代码演示:
package a01bytestreamdemo;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteStreamDemo2 {
public static void main(String[] args) throws IOException {
FileOutputStream fos=new FileOutputStream("Test\\a.txt");
// fos.write(97);
// fos.write(98);
// byte[] bytes={97,98,99,100,101};
// fos.write(bytes);
byte[] bytes={97,98,99,100,101};
//参数1:数组,参数2:起始索引,参数3:个数
fos.write(bytes,1,2);
fos.close();
}
}
运行结果:
四、换行写和续写:
换行写:再次写出一个换行符就可以了
Windows:\r\n ; Linux: \n ; Mac: \r
细节:Windows操作系统中,Java对回车换行进行了优化,虽然完整的是\r\n,但是我们写其中一个\r或者\n,Java也可以实现换行,因为Java在底层会补全
代码演示:
package a01bytestreamdemo;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteStreamDemo3 {
public static void main(String[] args) throws IOException {
//换行写
FileOutputStream fos=new FileOutputStream("Test\\a.txt");
String str="luhandashuaige";
byte[] arr = str.getBytes();
fos.write(arr);
String wrap="\r\n";
byte[] bytes=wrap.getBytes();
fos.write(bytes);
String str2="666";
byte[] arr1 = str2.getBytes();
fos.write(arr1);
fos.close();
}
}
运行结果:
续写:如果想要续写,打开续写开关就可以了
开关位置:创建对象的第二个参数
默认false:表示关闭续写,此时创建对象就会清空文件
手动传递true:表示打开续写,此时创建对象不会清空文件
代码演示:
package a01bytestreamdemo;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteStreamDemo3 {
public static void main(String[] args) throws IOException {
//换行写
FileOutputStream fos=new FileOutputStream("Test\\a.txt",true);
String str="luhandashuaige";
byte[] arr = str.getBytes();
fos.write(arr);
String wrap="\r\n";
byte[] bytes=wrap.getBytes();
fos.write(bytes);
String str2="666";
byte[] arr1 = str2.getBytes();
fos.write(arr1);
fos.close();
//续写
}
}
运行结果: