你来我往

IO流:

流是一组有序的,有起点和终点的字节的集合,是对数据传输的总称或着抽象;

根据操作类型可分为两种:输入流和输出流(I/O,Input/output))流提供一道通道程序,可以使用这条通道将数据传到指定的目的地,目的地也可以是键盘,鼠标,内存或者是显示窗口;

流按数据类型可分为两种:可以分为字节流,字符流;字节输入/输出流(inputstream/outputstream);字符输入/输出流(reader/writer),这些流都被放在Java.io包中,其中书友输入流都是inputstream或者reader的子类,而所有输出流都是outputstream或者writer的子类;
Inputstream类是输如流的抽象类,该类方法中出现错误是都会引发IOexception异常。
outputstream类是输出流的抽象类,而该类是表示输出字节流的所有类的超类(指被继承的类);该类方法中出现错误也同样会引发IOexception异常;
File类:file类是java.io包中唯一代表磁盘文件本身的对象,它定义了一些与平台无关的方法来操作对象,file类的对象主要用来获取文件本身的一些信息。自然对应的也有文件输入/输出流(fileinputstream/fileoutputstream),这两个类都是用来操作磁盘文件。filereader类/filewriter类这两个类都指提供了了堆字节或者字节数组的读取方法。
输入/输出流还有缓冲区:bufferedinputstream类和bufferedoutputstream类,bufferedreader类和bufferedwriter类,
数据输入输出流;datainputstream类和dataoutputstream类;

ZIP压缩输入输出流:ZIPinputstream类和ZIPoutputstream类;节省空间;

练习:

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
 * 字节缓冲流
 * @author LD
 *
 */
public class 字节缓冲流 {
@SuppressWarnings("resource")
//主函数
public static void main(String[] args) throws Exception {
//创建文件输入流对象
FileInputStream s= new FileInputStream("123.txt");
//创建文件输出流对象
FileOutputStream d=new FileOutputStream("1234.txt");
//输入缓冲流对象
BufferedInputStream in=new BufferedInputStream(s);
//输出缓冲流对象
BufferedOutputStream out=new BufferedOutputStream(d);
//字节缓冲区
byte[] b=new byte[1024];
//定义一个int类型变量,用于临时装载读取内容
int len=0;
//用一个while循环实现无限读写
while((len=in.read(b)) !=-1){
out.write(b, 0, len);
}
//关闭流
out.flush();
out.close();
System.out.println(out);
}

}

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
/**
 * 字符缓冲流
 * @author LD
 *
 */
public class 字符缓冲流 {
@SuppressWarnings("resource")
public static void main(String[] args) throws Exception {
//创建文件读取对象
FileReader fr = new FileReader("123.txt");
//创建读取缓冲流对象
BufferedReader dr=new BufferedReader(fr);
//创建文件写入对象
FileWriter fw = new FileWriter("1234.txt");
//创建写入缓冲流对象
BufferedWriter sw=new BufferedWriter(fw);
//创建字符缓冲区
char [] a=new char[1024];
//定义一个string类型变量,用于临时装载读取内容
String value=null;
//用一个while循环实现无限读写
while ((value=dr.readLine())!=null) {
sw.write(value,0,value.length()-1);
sw.newLine();

}
//关闭流
sw.flush();
sw.close();
}

}

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class filewrite {
public static void main(String[] args)  throws Exception{
filewrite filewrite = new filewrite();
filewrite.dict("E:\\WebStorm-2017.2.2.exe","E:\\1.txt");
}
@SuppressWarnings("unused")
public void dict(String src,String target) throws Exception {
//文件对象
File sr = new File(src);
File tar = new File(target);
//创建一个时间对象记录开始
long oclock = System.currentTimeMillis();
//文件输入流
FileInputStream in = new FileInputStream(sr);
//文件输出流
FileOutputStream out=new FileOutputStream(tar);
//文件长度
long length = sr.length();
//字节缓冲区
byte[] b=new byte[100000];
int len=0;
while((len=in.read(b)) !=-1){
out.write(b, 0, len);
}
long time = System.currentTimeMillis();
System.out.println(length/1024/1024+"M");
System.out.println(time-oclock+"ms");
in.close();
out.flush();
out.close();
}
}

猜你喜欢

转载自blog.csdn.net/liudasnb/article/details/80941138
今日推荐