Java基础——IO流

一、IO流的分类。

IO:首先io是指input output 输入输出流,输入输出是对于程序而言的。
IO:分类:
1、按照输出的数据类型不同
字节流 输入输出时候按照字节输入输出
字符流 输入输出时候按照字符输入输出
2、按照流的方向:
输入流 Input
输出流 Output
3、按照处理功能
节点流
处理流

二、File类

File f= new File(“路径”); 创建的是一个file对象,无需注意该路径或者文件是否存在该对象都能被创建,路径可以是目录或者文件。注意使用分隔符时候要两个\其中一个会被转译
也可以使用与操作系统无关的路径分隔符File.pathSeparator路径结束符号;File.separator路径分隔符
file常用方法:
f.canExecute()是否可执行
f.canWrite()是否可写
f.canRead()是否可写
f.compareTo(f)判断两个路径是否相等,返回0相等
f.getPath()获取相对路径
f.createNewFile()创建文件,创建时要确保该路径存在,否则报错
f.isAbsolute()是否是绝对路径
f.getAbsolutePath()获取绝对路径
f.getName()获取文件名
f.getParent()获取父级目录
f.getFreeSpace()获取剩余大小
f.getTotalSpace()获取总大小
f.getUsableSpace()获取可用大小
f.lastModified()上次修改时间
f.length()获取文件大小(字节)
f.listFiles()返回当前目录下的子目录和文件的File对象
f.mkdir() 创建目录,只能在当前路径下创建一级目录
f. isDirectory() 是否是目录
f.isFile() 是否是文件
f.mkdirs() 可以创建多级目录

三、文件输入流FileInputStream

InputStream:这是所有字节输入流的父类
1、作用:
FileInputSteam的作用是将文件读取进程序中。
2、常用构造方法:
FileInputSteam fs = new FileInputSteam(File file);//把一个file对象作为参数传入
FileInputSteam fs = new FileInputSteam(String name);//直接把文件路径作为字符串参数传入
3、常用方法:
int ch = fs.read();//每次都只读入一个字节的数据,返回int,可强制转换成char字符
int length = fs.read(byte[] b);//将读取到的数据存到字节数组中,返回读取到的字节数length
int length = fs.read(byte[] b,int off,int len);//同上,从off开始读,读取len的长度。
void fs.close//使用流时候,不要忘了用close关闭资源释放内存
4、如何使用
FileInputStream:文件字节输入流 数据源在文件中 读取按照字节读取 流的方向是输入
获取实例的方法:InputStream is = new FileInputStream(“文件全路径名”);
或者:
File(“文件全路径名”)
FileInputStream fs = new FileInputStream(file)
常用方法:
int bit = is.read();读取一个字节的数据。返回一个int类型字符,没有内容则返回-1
byte[] buf = new byte[1024];
len = is.read(buf) 读取该byte数组的长度并保存到该byte数组中,返回读取到的长度(字节)
输入流的格式:
1、创建对象
2、读取数据
3、分析数据
4、关闭资源

四、文件输出流FileOutputStream

OutputStream:这是所有字节输出流的父类
FileOutputStream:输出的目的是文件 输出流 输出的类型是字节
输出的时候如果 文件不存在会创建该文件,但是不会创建目录
创建文件输出流的方法跟输入流一样
1、创建输出流对象
2、声明要写的数据
3、写出数据
4、关闭资源
OutputStream os = new FileOutputStream(“全路径文件名”);
FileOutputStream fos = new FileOutputStream(“全路径文件名”);
int num = 97
os.write(num)
os.close();
常用方法
os.write(num) 往该文件中写入一个字符
os.write(byte[],Index,length) 往该文件中写入一个byte数组,从Index索引开始,写入length的长度

五、Writer和Reader

(1)Writer

1、作用:
所有字符输出流的抽象父类
2、常用的已实现方法:
append(char c);//将指定字符写入缓冲区
writer(char[] cbuf);//将指定字符数组写入缓冲区
write(char[] cbuf, int off, int len)//将指定字符数组写入缓冲区,从off开始写入len长度
write(int c);//写入一个字符
write(String str);//将该字符串写入缓冲区
write(String str, int off, int len)//将指定字符串组写入缓冲区,从off开始写入len长度

(2)Reader

1、作用:
所有字符输入流的抽象父类
2、常用的已实现方法:
markSupported();//判断该文件是否支持标记,返回boolean,标记通常用于暂停下载
mark(int readAheadLimit);//标记流中当前位置
int num = read();//读一个字符,末尾返回-1
int length = read(char[] cbuf);//读取一个字符数组到cbuf中,返回读取到的长度,末尾返回-1
long l = skip(long n);跳过n个字符不读取,返回实际掉过的字符数
ready();//判断次流是否可以读

(3)OutputStreamWriter

1、描述:
这是一个字符输出流,是从字符流到字节流的桥接器。
2、常用构造器
OutputStreamWriter(OutputStream out)//一般放OutputStream的子类对象,常用字节输出流FileOutputStream
OutputStreamWriter(OutputStream out,String charsetName)//指定字符编码格式
3、常用方法:
write(int c);//写入一个字符
write(char[] cbuf, int off,int len);//写入一个字符数组,从off开始,写len长度
write(String str, int off,int len);//写入一个字符串,从off开始,写len长度
flush();//将缓冲区中的内容刷新到文件中

(4)OutputStreamWriter

1、描述:
这是一个字符输出流,是从字符流到字节流的桥接器。
2、常用构造器
OutputStreamWriter(OutputStream out)//一般放OutputStream的子类对象,常用字节输出流FileOutputStream
OutputStreamWriter(OutputStream out,String charsetName)//指定字符编码格式
3、常用方法:
write(int c);//写入一个字符
write(char[] cbuf, int off,int len);//写入一个字符数组,从off开始,写len长度
write(String str, int off,int len);//写入一个字符串,从off开始,写len长度
flush();//将缓冲区中的内容刷新到文件中

(5)BufferedWriter

1、描述:
将文本写入字符输出流,缓冲字符。即写入OutputStreamWriter中
2、构造器:
BufferWriter(Writer out);//一般放入缓冲桥接器 OutputStreamWriter
BufferWriter(Writer out, int size);//指定缓冲区大小
3、常用方法:
writer(char[] cbuf,int off,int len);//写一个字符数组,从off开始,写入len长度。
writer(int ch);//写入一个字符
writer(String s,int off,int len);//写一个字符串,从off开始,写入len长度
newLine();//写一个分隔符
flush();//刷新流
close();//流都要关闭

(6)BufferedReader

1、描述:
从字符输入流中读取文本,缓冲字符。
2、构造器:
BufferReader(Reader in);// 一般放入缓冲桥接器 InputStreamReader
BufferReader(Reader in,int sz);//指定缓冲区大小
3、常用方法:
markSupported();//是否支持mark标记
mark(int readAheadLimit);//标记流中的当前位置
read();//读取一个字符,返回int
int length = read(char[] cbuf,int off,int len);//将内容读入字符数组中,返回读取的长度
readLine();//读取一行
read();//判断此流是否可读,返回boolean

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值