1、区别于序列化,序列化会转换成二进制字节流,不可直接读取。FileWriter则将数据以文本文件的形式保存起来,其他非Java程序可读取。
2、File 可以认为是文件的路径,不是文件本身。提供一种比使用字符串文件名表示文件更安全的方式。代表这个文件,但是不能读取文件中的数据。
public static void saveData() {
try {
//不存在此文件就会被创建
FileWriter writer = new FileWriter("texat.txt");
writer.write("hello world");
//写完后记得关闭
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
3、file的使用:
- 创建出代表存盘文件的File对象:File f = new File("MyBook.txt");
- 创建目录:File dir = new File("Chapter8"); dir.mkdir();
- 列出目录下的内容:
if(dir.isDirectory()){ String[] dirContents = dir.list(); for(int i =0; i < dirContents.length; i++){ sys(dirContents[i]); } }
- 取得文件或目录的绝对路径 dir.getAbsolutePath();
- 删除文件或目录: 成功返回true,boolean isDeleted = f.delete();
4、缓冲区,可以暂存内容,一直到存满,省下好多趟直接读写的时间
String aFile = "test.txt";
BufferedWriter writer = new BufferedWriter(new FileWriter(aFile));
//强制缓冲区立即写入
writer.flush();
BufferedInputStream是套在某个其他的InputStream外,起着缓存的功能,用来改善里面那个InputStream的性能(如果可能的话),它自己不能脱离里面那个单独存在。
FileInputStream是读取一个文件来作InputStream。所以你可以把BufferedInputStream套在FileInputStream外,来改善FileInputStream的性能。
FileInputStream与BufferedInputStream区别:
FileInputStream是字节流,BufferedInputStream是字节缓冲流,使用BufferedInputStream读资源比FileInputStream读取资源的效率高(BufferedInputStream的read方法会读取尽可能多的字节),且FileInputStream对象的read方法会出现阻塞;
FileInputStream与FileReader区别:
FileInputStream是字节流,FileReader是字符流,用字节流读取中文的时候,可能会出现乱码,而用字符流则不会出现乱码,而且用字符流读取的速度比字节流要快;
ObjectOutputStream与ByteArrayOutputStream的区别:
ObjectOutputStream可以将java对象写入outputstream流中(序列化),然后进行持久化,此对象必须是实现了java.io.Serializable 接口;
ByteArrayOutputStream是将数据写入byte数组中;
BufferedWriter 用于读取文本文件或字符串合适
BufferedOutputStream 读取二进制流: