IO流
来源:互联网 发布:电脑绘图软件sai 编辑:程序博客网 时间:2024/05/16 09:51
IO流就是InputStream和OutputStream
这两个是字节流的顶级父类
相对与程序框来说,InputStream就是往程序输入数据,OutputStream就是输出数据
这里的输入输出是相对程序来说的
InputStream的常用方法 OutputStream的常用方法
int read() void write(int b)
从输入流读取一个8位的字节,把它转换成0~255之间 向输出流写入一个字节(自动将b转换成二进制的类型数据)
的整数,并返回。
int read(byte[] b) void write(byte[] b)
从输入流读取若干字节,把他们保存到参数b指定 将参数b指定的字节数组的所有字节写到输出流
的字节数组中,返回的整数代表读取字节数。
int read(byte [] b,int off,int len) void write(byte[] b,int off,int len)
从输入流读取若干字节,保存到数组b,off表示数组中 将指定byte数组中从偏移量off开始的len个字节写入输出流
开始保存数据的索引,len表示读取的字节数
void close( ) void flush()
关闭输入流,并释放与该流关联的所有系统资源 刷新此输入流并强制写出所有缓冲的输出字节
void close()
关闭此输出流并释放与此流相关的所有系统资源
-------------------------------------------------------------------------------------------------------------------
用字节流读取文件
FileInputStream是InputStream的之类,它是操作文件的字节输入流
接下来的代码要现在当前目录下创建一个文本文件test.txt,并在里面写下”itcast“
import java.io.*;public class 字节流读写文件 { public static void main(String[] args) throws Exception{FileInputStream in = new FileInputStream("test.txt");int b = 0;while(true){b = in.read();if(b == -1)break;System.out.println(b);} in.close(); } }+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
用字节流写文件
FileOutStream是相对FileOutStream的子类,它是操作文件的字节输出流,专门把用于数据写入文件
import java.io.*;public class 写入数据 { public static void main(String[] args)throws Exception {FileOutputStream out = new FileOutputStream("test.txt");//FileOutStream的构造函数FileOutStream(String fileName,boolean append)如果将String str = "我的文件"; //参数boolean设置为true,则会在已存在的文件中追加内容byte[] b=str.getBytes();for(int i = 0 ;i < b.length; i++){out.write(b[i]);}out.close();} }
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
IO流会产生异常,所以要用throws将异常抛出,然而一旦遇到异常,close()方法将无法执行,流对象所占用的资源将得不到释放,为此,通常将关闭流的代码写在finally代码块中
finally{ try{ if(in!=null) //如果in不为空,关闭输入流 in.close() }catch (Exception e){ e.printStackTrace(); } try{ if(out!=null) //如果out不为空,关闭输出流 out.close(); }catch (Exception e){ e.printStackTrace(); }}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
文件的拷贝
<span style="font-size:14px;">public class 文件的拷贝 { public static void main(String[] args)throws Exception {InputStream in =new FileInputStream("source\\Beyond.mp3"); //创建一个字节输入流,用于读取当前目录下的source文件中的mp3文件OutputStream out =new FileOutputStream("target\\Beyond.mp3"); //创建一个字节输出流,用于将读取的数据写入target目录下的文件中int len; //定义一个int类型的变量len,记住每次读取的一个字节。long begintime = System.currentTimeMillis(); //当前系统时间while((len = in.read()) != -1){ //读取一个字节并判断是否读到文件末尾out.write(len); //将读取到的字节写入文件}long endtime=System.currentTimeMillis(); //获取拷贝结束时的系统时间System.out.println("拷贝文件所消耗的时间是:"+(endtime-begintime)+"毫秒");in.close();out.close();}}</span>上面的代码是一个字节一个字节的读取,效率不高,可以定义一个字节数组作为缓冲区,一次性读取多个字节的数据,并保存在数组里,然后将字节数组中的数据一次性写入文件。
public class 文件的拷贝 { public static void main(String[] args)throws Exception {InputStream in =new FileInputStream("source\\Beyond.mp3"); //创建一个字节输入流,用于读取当前目录下的source文件中的mp3文件OutputStream out =new FileOutputStream("target\\Beyond.mp3"); //创建一个字节输出流,用于将读取的数据写入target目录下的文件中byte[] buff = new byte[1024]; //定义一个缓冲区,用来读写文件int len; //定义一个int类型的变量len,记住每次读取的一个字节。long begintime = System.currentTimeMillis(); //当前系统时间while((len = in.read(buff)) != -1){ //读取一个字节并判断是否读到文件末尾out.write(buff,0,len); //将读取到的字节写入文件}long endtime=System.currentTimeMillis(); //获取拷贝结束时的系统时间System.out.println("拷贝文件所消耗的时间是:"+(endtime-begintime)+"毫秒");in.close();out.close();}}
- 【IO流】IO框架
- IO流呀IO流
- 字符IO&数据流IO&对象流IO
- io流
- io流
- IO流
- IO流
- IO 流
- IO流
- io流
- IO流
- io流
- IO流
- IO流
- IO流
- IO流
- IO流
- IO流
- 第一篇正式的课文:竞赛题目的类型
- plist 属性列表 ---数据持久化方式之一
- c语言学习笔记(10)编译器编译过程分析
- jquery常用选择器(上)
- 中介者模式
- IO流
- NetBeans里几个比较实用的小方法
- android学习-----多线程
- c++实现数据结构4.双循环链表
- GOF 23设计模式之 组合模式(composite)
- [数据结构]hash小题HD1496(hash开放寻址)
- 阻止子元素的点击事件
- git连接到github(SSH无密码登陆)
- C++中一个类对象占用的内存空间大小