文件
文件就是保存数据的地方
文件流
文件在程序中是以流的形式来操作的
流:数据在数据源(文件)和程序(内存)之间经历的路径
输入流:数据从数据源(文件)到程序(内存)的路径
输出流:数据从程序(内存)到数据源(文件)的路径
创建文件对象相关构造器和方法
相关方法
new File(String pathname)//根据路径构建一个File对象
new File(File parent,String child)//根据父目录文件+子路径构建
new File(String parent,String child)//根据父目录+子路径构建
createNewFile 创建新文件
例子
public static void main(String[] args) throws IOException {
// File miao = new File("d:\\", "miao");
// File file = new File("d:/ios.txt");
File file = new File("d:\\");
File qwq = new File(file, "qwq");
if (qwq.createNewFile()) {
System.out.println("创建ok");
}else{
System.out.println("创建失败");
}
}
方法
文件名字:get.getName()
文件绝对路径:getAbsolutepath()
文件父级目录:getparent()
文件大小(字节):length()
文件是否存在:exists()
是不是一个文件:isFile()
是不是一个目录:isDirectory()
创建一级目录:mkdir()
创建多级目录:mkdirs()
删除空目录或文件:delete()
lo流原理及流的分类
java lo流原理
1.I/O是Input/Output的缩写,I/O技术是非常实用的技术,用于处理数据传输。如读/写文件,网络通讯等
2.java程序中,对于数据的输入/输出操作以“流(srteam)”的方式进行。
3.java.io包下提供了各种“流”类和接口,用于获取不同种类的数据,并通过方法输入或输出数据
4.输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中
5.输出output:将程序(内存)数据输出到磁盘、光盘等存储设备中
流的分类
按操作数据单位不同分为:字节流(8 bit),字符流(按字符)
按数据流的流向不同分为:输入流,输出流
按流的角色的不同分为:节点流,处理流/包装流
抽象基类 | 字节流 | 字符流 |
输入流 | InputStream | Reader |
输出流 | OutputStream | Writer |
1.java的IO流共涉及40多个类,实际上非常规则,都是从如上4个抽象基类派生的
2.由这四个类派生出来的子类名称都是以其父名作为子类名后缀
节点流和处理流的区别和联系
1.节点流是底层流/低级流,直接跟数据源相接
2.处理流包装节点流,即可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入输出
3.处理流(也叫包装流)对节点流进行包装,使用了修饰器设计模式,不会直接与数据源相连
处理流的功能主要体现现在以下两个方面
1.性能的提高:主要以增加缓冲的方式来提高输入输出的效率
2.操作的便捷:处理流可能提供了一系列便捷的方法来一次输入输出大批量的数据,使用更加灵活方便
节点流和处理流
注意事项和细节
1.读写顺序要一样
2.要求实现序列化或反序列化对象,需要实现Serializable
3.序列化的类中建议添加SerialVersionUID,为了提高版本的兼容性
4.序列化对象时,默认将里面所有属性都进行序列化,但除了staitic或transient修饰的成员
5.序列化对象时,要求里面属性的类型也需要实现序列化接口
6.序列化具备可继承性,也就是如果某类已经实现了序列化,则它的所有子类也已经默认实现了序列化
标准输入输出流
System.in标准输入 类型:inputStream 默认设备:键盘
System.out 标准输出 类型:printStream 默认设备:显示器
转换流
InputStreamReader和OutputStreamWriter
介绍
1.InputStreamReader:Reader的子类,可以将InputStream(字节流)包装成Reader(字符流)
2.OutputStreamWriter的子类,实现将OutputStream(字节流)包装成Writer(字符流)
3.当处理纯文本数据时,如果使用字符流效率更高,并且可以有效解决中文问题,所以建议将字节流装换成字符流
4.可以在使用时指定编码格式(比如 utf-8,gbk,gb2312,ISO8859-1等)
打印流(只有输出流,没有输入流)
PrintStream和PrintWriter
Properties类
1.专门用于读写配置文件的集合类
配置文件的格式:
键 = 值
键 = 值
2.注意:键值对不需要有空格,值不需要用引号括起来,默认类型是String
3.Properties的常见方法
1.load:加载配置文件的键值对到Properties对象
2.list:将数据显示到指定设备
3.getProperty(key):根据键获取值
4.setProperty(key,value):设置键值对到Properties对象
5.store:将Properties中的键值对存储到配置文件,在idea中,保存信息到配置文件,如果含有中文,会存储为unicode码