版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
1、文件:
文件是相关记录或者放在一起的数据集合。带后缀的都是文件,不带的是文件夹。
2、常用的一些方法
boolean exists();//判断文件或文件夹是否存在
boolean isFile();//判断是否是文件
boolean isDirectory();//判断是否是文件夹
String getPath();//返回对象表示的文件的相对路径
String getAbsolutePath();//返回对象表示文件的绝对路径
String getName();//返回此对象表示的文件或文件夹的名称
bolean delete();//删除此对象指定的文件或文件夹
boolean creatNewFile();//创建名称的空文件,不创建文件夹
long length();//返回文件的长度,单位为字节,如果文件不存在,则返回0
3、创建文件以及文件夹
创建一个文件:File file=new File("f:");//参数是文件的路径f:/aa/aa或者f:\\aa\\aa
File[] files=file.listFiles();//遍历一个文件夹返回一个文件数组。
创建一个文件夹:File file=new File("f:");//只是new了一个文件对象并没有创建
file.mkdir;//创建文件夹
4、通过流来读写文件
流:是一连串流动的字符,是以先进先出方式发送信息的通道
文件的读写是站在内存的角度。进内存输入流(读),出内存输出流(写)。
5、流的各种划分
按流的方向区分:输入流和输出流
输入流:从文件读数据到内存
输出流:从内存读数据到文件
按处理单位的不同:字节流和字符流 一个字符=两个字节
读汉字文本用字符流,读文件用字节流(包括txt,doc,图片)
按照功能不同分为:节点流和处理流
节点流为可以从一个特定的数据源(节点)读写数据(如:文件,内存)
处理流是连接在已存在的流(节点流或处理流)之上,通过对数据的处理为程序
提供更为强大的读写功能。
处理流可以加快读写的速度。处理流依托于节点流存在
。
6、InputStream 与reader
继承自InputStream的流用于向程序中输入数据,且数据单位 为8bit
节点流:FileInputStream;StringBufferInputStream;ByteArrayInputStream;
处理流:ObjectInputStream;BufferInputStream;
int read();//读取单个字节,返回读取的字节数据(可直接转换为int型)
读到流的末尾则返回-1,可以用来判断是否读取完毕
int read(byte[]/char[] b);//从输入流读取最多b.length个字节的数据,并
存储在字节数组b中,返回实际读取的字节数。读到流的末尾则返回-1
读取b.length()的数据并把数据写入到数组里
int read(byte[]/char[] b,int off,int len);//从off位置开始读取len个长度
void close();//关闭流,释放内存资源。
判断流非空再关闭
7、OutputStream 与Writer
继承自OutputStream的流用于程序中输入数据,且数据的单位为字节8bit
节点流:FileOutputStream;ByteArrayOutputStream;
处理流:ObjectOutputStream;BufferedOutputStream
void write(int c);//将指定的字节/字符输出到输出流中,其中c既可以代表字节
也可以代表字符
void write(byte[]/char[] buf);//将字节数组/字符数组中的数据输出到指定输出流中
void write(char[] cbuf,int off,int len);//将字节数组/字符数组从off位置开始,
长度为len的字节/字符输出到输出流中
void close();//关闭流 释放内存资源
void flush();//将缓冲区中的数据全部取出后,再关闭管道
流 先开的后关,后开的先关
8、Reader 和 Writer 读写字符
FileReader/FileWrite
BufferedReader---(缓冲输入流)处理读的流;按行读取
String readLine();//读一行文字,读完返回null
BufferedWrite---(缓冲输出流)处理写的流;
newLine();//写入问本的时候。换行
9、ObjectInputStream/ObjectOutputStream 对象输入流/输出流
类的序列化--将对象保存为二进制文件
反序列化--将二进制文件恢复为对象
类要实现一个Serializable接口
eg:FileOutputStream fo = null;//节点流
ObjectOutputStream oos = null;//处理流
File f = new File("person.txt");//初始化文件
fo = new FileOutputStream(f);//初始化节点流
oos = new ObjectOutputStream(fo);//初始化处理流
oos.writeObject(personlist);//写入