学习笔记---------------IO
一、file概念
file可以代表一个目录或1个文件,并不能代表文件内容,操作文件的外围属性
硬盘上某一个文件或文件夹,可以看到该文件的属性,不能看到内容
java.io包
io input output输入输出技术
路径: \\ 或者 /
声明一个目录对象
File file = new File("d/A.java")
File file = new File("d\\A.java")
二、File基本的操作
1、构造方法
File file = new File("d:/1.jpg");
File dir = new File("d:");
File file2 = new File(dir,"A.java");
File file3 = new File("d:","/1.jpg");
2、创建文件操作
mkdir:创建单层目录 dir1/dir2:必须保证dir1是存在的,才能成功创建dir2
mkdirs:创建层级目录 dir1/dir2:如果dir1不存在,会先创建dir1,再创建dir2
createNewFile:创建文件 dir1/a :必须保证dir1是存在的,否则,会报系统找不到指定的路径的异常
if(!file.exists()){
file.creatNewFile();
}
3、文件的常用读操作
获得文件名称 getName()
获得文件最后一次修改时间 lastModified() 如果找不到该文件,指向的日期就是1970年一月一日8点
获得文件长度 length()
构造方法中只写了文件夹和文件名,则该文件在当前项目中
获得文件的绝对路径 getAbsolutePath()
获得文件的相对路径 getPath()
是否是文件 isFile()
是否是目录 isDirectory()
判断文件是否存在 exists()
获得当前File对象所表示目录下的文件和目录名称,返回String[]类型的数据 list()
获得当前File对象所表示目录下的文件和目录,返回File[]类型的数据 listFiles()
创建新文件 creatNewFile()
创建目录 mkdir()
创建多层目录 mkdirs
4、修改文件名称
renameTo()
如果在同一个目录下,相当于重命名
如果不在一个目录下,相当于剪切
5、删除文件和文件夹
delete()
三、流的概念
File类关心的是磁盘上存储的文件位置和名称等,而流是指程序运行中的数据通信信道,当然流类所关心的是文件的内容。
四、流的分类
根据流向分为:输入流,输出流
根据传输单位:字节流,字符流
根据是否和数据源可以直接交互:节点流,处理流
节点流:可以和数据源直接交互,FileInputStream,FileOutPutStream,FileWriter,FileReader
处理流:需要连接嵌套其它的流使用,BufferedReader,BufferedWriter
五、流的四个根(父)类
1. InputStream(字节输入流)
FileInputStream:节点流,字节输入流,按照字节为单位读文件,文件复制
ObjectInputStream:处理流,对象输入流,需要嵌套一个字节输入流进行使用,如 FileInputStream,反序列化
2. OutputStream(字节输出流)
FileOutputStream:节点流,字节输出流,按照字节为单位写,文件复制
ObjectOutPutStream:处理流,对象输出流,需要嵌套一个字节输出流,如FileOutputStream进行 使用,序列化
3. Reader(字符输入流)
FileReader:节点流,针对文件的字符输入流,以字符为单位读文件,存在乱码问题,不能直接按行 进行读
BufferedReader:处理流,带缓冲区的字符输入流,以行为单位读文件readLine:返回值为null表示 读取结束
InputStreamReader:处理流,转换流(可以将字节流转换为字符流),需要嵌套节点流使用,读文 件的指定字符集编码,解决乱码问题
4. Writer(字符输出流)
FileWriter:节点流,针对文件的字符输出流,以字符为单位写文件,存在乱码问题,不能直接按行写
BufferedWriter :处理流,带缓冲区的字符输出流,按照行写字符,
newLine OutPutStreamWriter:处理流,转换流(可以将字节流转换为字符流),需要嵌套节点流使用,写文件的时候指定字符集编码,解决乱码
问题
字节流
FileInputStream
常用api
FileInputStream是InputStream的子类。
FileInputStream是读取文件的字节输入流。
FileInputStream常用的构造方法:
FileInputStream(File file) FileInputStream(String filename) FileInputStream覆盖实现了父类如下方法: int available() void close()