IO流对象

1.File(D22)

windows的文件名不区分大小写

1.构造方法: 

file(String pathname)

file(String parent,String child)     //可以单独操作父路径和子路径,灵活性较高

file(File parent,String child)    //父路径为File类型,可以调用File类的方法

2.方法:

1.创建:

boolean createNewFile()    //指定文件已经存在,不再创建,只能创建文件,不能创建文件夹

boolean mkdir()    //创建文件夹

boolean mkdirs()    //创建多级文件夹

2.删除:

boolean delete()    //删除的文件或文件夹在File的构造方法中给出

3.获取:

String getName()    //获取路径的最后部分的名字 1.txt

long length()    //返回路径中表示文件的字节数

String getAbsolutePath()    // 获取绝对路径

File getAbsoluteFile()    //推荐使用file类型,灵活


String [ ]  list()    //获取到路径中的文件和文件夹名(遍历一个目录)

File    [ ]  listFiles()     //获取到路径中的文件和文件夹名(遍历一个目录)File类

4.判断

boolean exists()    //判断File构造方法中的封装路径是否存在,不写绝对路径,默认路径为工程路径

boolean isDirectory()    //判断路径是否为文件夹

5.文件过滤器

File listFile(FileFilter filter)    //传递FileFilter接口的实现类

File file=new File("c:\\demo")

File [] fileArr=file.listFile(new myFilter());    //如果是java文件则存入数组

public class MyFilter implements FileFilter{

    public boolean accept(File pathname)

    return pathname.getName().endsWith(".java");

}


文件过滤器的执行过程


文件夹的递归遍历

递归:方法中主体不变,运行时,参数发生变化的情况

注意:1.要有出口

            2.次数不能过多



1.字节输出流FileOutputStream(D23)

1.从java程序中,写出文件,每次只操作一个字节,写任意文件

write();

close();    //关闭此流,并释放相关资源 

2.流对象使用步骤

构造方法:绑定数据源(参数:File,String)

1.创建流子类对象,绑定目的

2.创建流对象的write写

3.close释放资源

write(100);    //一次只写一个字节,100转成二进制,写入文件,文件中显示d

3.IO异常处理的细节

1.保证流对象作用域足够大

2.catch怎么处理:输出异常信息

2.字节输入流FileInputStream

构造方法:绑定数据源(参数:File,String)

1.创建字节输入流的子类对象

2.调用read()方法

3.关闭资源

FileInputStream fis=new FileInputStream("d:\\b.txt");

~int i =fis. read();    //返回读取到的字节的ascii码值,读取到结尾,返回的是-1,调用一次自动向后移动

~int read(byte[ ] b)    //数组作用:缓冲,提高效率,数组中存储读到的内容的ascii码值,int:读取到了多少个有效的字节数

~getbytes();    //文字转换成数字 abc=>{97,98,99}

~new String (b)     //数字转换成文字 byte[] b= {97,98,99}=>sop(new String(b))


使用字节数组读取,提升效率


一个字节一个字节读取文件


读取一个字节拷贝一个字节


通过字节数组拷贝,提高效率

3.字符输出流Writer

抽象类,通过子类对象FileWriter实现

构造方法:绑定数据源,参数,String,File

需要刷新flush();

write(int c)

write(char [] c)

write(char [] c,int ,int)

write(String s)

4.字符输入流Reader

抽象类,通过子类对象FileReader实现

构造方法:绑定数据源,参数,String,File

int read();    //读取一个字符

int read(char [] c)    //读取字符数组



1.转换流OutputStreamWriter

继承Writer,字符输出流,用于写文本文件,字符通向字节的桥梁:字符转换成字节存储至硬盘

Q&A:FileOutputStream也能写,为什么要用OutputStreamWrite转换

FileOutputStream 是字节流,一个字节一个字节的读取

OutputStreamWrite是字符流,一个字符一个字符的读取

英文字符占一个字节,中文是一个字符占两个字节。

如果用stream,读英语可能没问题,读出来的中文可就是乱码或者一个个“????”。

如果你用Write,就不会有乱码


转换流OutputStreamWriter的使用


2.转换流InputStreamReader

字节通向字符的桥梁:将硬盘中的字节转换成字符显示出来。

转换流InputStreamReader的使用

3.转换流子类和父类的区别

OutputStreamWriter

子类:FileWriter

InputStreamReader 

子类:FileReader 

桥梁:(字节流+编码表)

子类使用默认编码表GBK,简化代码

4.字节输出流的缓冲BufferedOutputStream

构造方法:BufferedOutputStream(OutputStream out)

可以传递任意的字节输出流,提高传递者的效率

方法write(),参数:字节,字节数组

5.字节输入流的缓冲BufferedIntputStream

构造方法:BufferedIntputStream(InputStream in)

可以传递任意的字节输入流,提高传递者的效率

6.字符输出流的缓冲BufferedWriter

构造方法:BufferedWriter(Writer w)

FileWriter,OutputStreamWriter

字符串=>字符数组     "hello".toCharArray()

特有方法:void newLine()    //写换行

7.字符输入流的缓冲BufferedReader

构造方法:BufferedReader(Reader r)  

FileReader,OutputStreamReader

特有方法:String readLine()    //读取到流的末尾,返回null,只返回行的有效字符

8.IO流对象的操作规律

把IO流进行了规律的总结(四个明确):

明确一:要操作的数据是数据源还是数据目的。

源:InputStream    Reader

目的:OutputStream Writer

先根据需求明确要读,还是要写。


明确二:要操作的数据是字节还是文本呢?

源:

 字节:InputStream

文本:Reader

目的:

 字节:OutputStream

文本:Writer

已经明确到了具体的体系上。


明确三:明确数据所在的具体设备。

源设备:

硬盘:文件  File开头。

内存:数组,字符串。

键盘:System.in;

网络:Socket

目的设备:

硬盘:文件  File开头。

内存:数组,字符串。

屏幕:System.out

网络:Socket

完全可以明确具体要使用哪个流对象。


明确四:是否需要额外功能呢?

额外功能:

转换吗?转换流。InputStreamReader OutputStreamWriter

高效吗?缓冲区对象。BufferedXXX

   InputStream

      FileInputStream

      BufferedInputStream

OuputStream

   FileOutputStream

   BufferedOuputStream

Writer

  OutputStreamWriter

     FileWriter

     BufferedWriter

Reader

  InputStreamReader

     FileReader

 BufferedReader

字节流

字节输入流InputStream

FileInputStream 操作文件的字节输入流

BufferedInputStream高效的字节输入流

字节输出流OutputStream

FileOutputStream 操作文件的字节输出流

BufferedOutputStream 高效的字节输出流

字符流

字符输入流Reader

FileReader 操作文件的字符输入流

BufferedReader 高效的字符输入流

nputStreamReader 输入操作的转换流(把字节流封装成字符流)

字符输出流Writer

FileWriter 操作文件的字符输出流

BufferedWriter 高效的字符输出流

OutputStreamWriter 输出操作的转换流(把字节流封装成字符流)

方法:

读数据方法:

read() 一次读一个字节或字符的方法

read(byte[]  char[])一次读一个数组数据的方法

readLine() 一次读一行字符串的方法(BufferedReader类特有方法)

readObject() 从流中读取对象(ObjectInputStream特有方法)

写数据方法:

write(int) 一次写一个字节或字符到文件中

write(byte[] char[]) 一次写一个数组数据到文件中

write(String) 一次写一个字符串内容到文件中

writeObject(Object ) 写对象到流中(ObjectOutputStream类特有方法)

newLine() 写一个换行符号(BufferedWriter类特有方法)

向文件中写入数据的过程

1,创建输出流对象

2,写数据到文件

3,关闭输出流

从文件中读数据的过程

创建输入流对象

从文件中读数据

关闭输入流

文件复制的过程

创建输入流(数据源)

创建输出流(目的地)

从输入流中读数据

通过输出流,把数据写入目的地

关闭流

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容