JAVA_SE基础知识——IO流

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43841301/article/details/101061348

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);//写入

猜你喜欢

转载自blog.csdn.net/weixin_43841301/article/details/101061348