流
流的概括:
流是具有方向、具有流质(里面内容) ,其作用就是用于程序与外部数据相互交互.
流的分类:
1)按照方向分:
输入流(继承自抽象类InputStream或Reader);
输出流(继承自抽象类OutputStream或Writer);
2)按照字节流和字符流分:
字节流是以byte为最小单位进行数据传送(继承自抽象类InputStream或OutputStream);
字符流是以char为最小单位进行数据传送(继承自抽象类Reader或者Writer);
3)按照功能来分:
节点流--低级流是可以直接从/向一个特定的数据源(例如磁盘文件、内存、网络)读/写数据的流;
处理流--高级流不直接连接到设备,而是连接在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更强大的读写功能;
文件类
File类提供了管理磁盘文件和目录的基本功能.即代表文件也代表文件夹.
代码练习:
public static void main(String[] args) {
// TODO Auto-generated method stub
String fromPath = "C:" + File.separatorChar +"1" + File.separatorChar + "MainEnter.java";
File file = new File(fromPath);
String toPath = "C:" + File.separatorChar +"2" + File.separatorChar + "MainEnter.java";
File file02 = new File(toPath);
//判断文件是否存在
if(file.exists()) {
//无论文件是什么类型的文件,都可以采用字节流
//推荐:对于字节码文件,或者图片,或音频,视频等等文件,我们读取时,一般采用字节流
//而文本文件,采用字符流
FileInputStream in = null;
FileOutputStream out = null;
byte[] data = new byte[1024];//定义一个数据缓冲区
try {
in = new FileInputStream(file);//针对该文件,创建一个对应字节输入流
//false代表文件采用覆盖的方式,来写入内容,true代表文件采用尾部追加的方式,来写入内容
out = new FileOutputStream(file02,false);//针对该文件,创建一个对应的字节输出流
// int c = 0;
// while((c = in.read()) != -1) {
// out.write(c);
// }
int lenth = 0;//代表单次读取内容的长度
while((lenth = in.read(data)) != -1) {
out.write(data,0,lenth);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {//关流
try {
in.close();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}