总结:字符流和字节流
字符流:中英文正常显示,只能复制文本文件
字节流:图片,歌
- read,input 输入流
- write,output 输出流
- read,write 字符流
- input,output 字节流
一.字符流
1.字符输入流
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Demo1 {
//需求一:将硬盘上的文本文件内容在控制台中打印输出
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//字符输入流
FileReader wj=new FileReader("E:/2021学年第二学期教学资料/Java面向对象程序设计教程/第八模块/教学资料/良心.txt");
int aa; //这里必须定义成整型,Java规定
aa=wj.read(); //读取一个字符
System.out.println("文件内容:");
while(aa!=(-1)){ //ASCII码是从0开始的数字,到255.
System.out.print((char)aa);
aa=wj.read();
}
wj.close(); //将文件关闭,否则占内存
}
}
2.字符输出流
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Demo2 {
//需求二:将“良心”的文件复制一份到桌面
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileReader fz=new FileReader("E:/2021学年第二学期教学资料/Java面向对象程序设计教程/第八模块/教学资料/良心.txt");
//字符输出流
FileWriter zt=new FileWriter("C:/Users/Administrator/Desktop/做人要讲良心.txt");
int a;
a=fz.read();
while(a!=(-1)){
zt.write(a);
a=fz.read();
}
fz.close();
zt.close();
}
}
二.字节流
1.字节输入流
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Demo3 {
//需求一:将硬盘上的文本文件内容在控制台中打印输出
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//字节输入流
FileInputStream wj=new FileInputStream("E:/2021学年第二学期教学资料/Java面向对象程序设计教程/第八模块/教学资料/良心.txt");
int aa;
aa=wj.read();
System.out.println("文件内容:");
while(aa!=(-1)){
System.out.print((char)aa);
aa=wj.read();
}
wj.close();
}
}
1.字节输出流
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo5 {
//需求:将"青花瓷.mp3"文件复制一份到桌面
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//字节输入流
FileInputStream fz=new FileInputStream("E:/2021学年第二学期教学资料/Java面向对象程序设计教程/第八模块/教学资料/DSC00167.JPG");
//字节输出流
FileOutputStream zt=new FileOutputStream("C:/Users/Administrator/Desktop/DSC00167.JPG");
int aa;
aa=fz.read();
while(aa!=(-1)){
zt.write(aa);
aa=fz.read();
}
fz.close();
zt.close();
}
}
三.缓冲流
作用:起到了“增加速度”的效果
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo1 {
//将硬盘上的"青花瓷.mp3"文件复制一份到桌面
public static void main(String[] args) throws IOException {
//缓冲字节输入流
BufferedInputStream hcfz=new BufferedInputStream(new FileInputStream("F:/2021学年第二学期教学资料/Java面向对象程序设计教程/第八模块/教学资料/青花瓷.mp3"));
//缓冲字节输出流
BufferedOutputStream hczt=new BufferedOutputStream(new FileOutputStream("C:/Users/Administrator/Desktop/周杰伦.mp3"));
byte[] hc=new byte[2048]; //字节数组,单位字节,数字就是缓冲区大小
int ff;
ff=hcfz.read(hc);
while(ff!=(-1)){
hczt.write(hc, 0, ff);
ff=hcfz.read(hc);
}
hczt.flush(); //将流中残留内容全部输出,写在文件关闭之前
hcfz.close();
hczt.close();
}
}
四.虚拟内存(硬件)
作用:是用内存来占据内存硬盘,也就是说由硬盘拿出一部分来代替内存。
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class Demo2 {
//大家把这段程序当公式用即可
//功能介绍:把一个长整型的数据发送给另一个变量,实现"发送==>接收"
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//字节数组流(输出)
ByteArrayOutputStream zjszl=new ByteArrayOutputStream();
DataOutputStream sjl=new DataOutputStream(zjszl);
long aa=123456456;
sjl.writeLong(aa);
//以上代码实现"发送" 功能(输出)
byte[] zjsz=zjszl.toByteArray();
ByteArrayInputStream str=new ByteArrayInputStream(zjsz);
DataInputStream sjsr=new DataInputStream(str);
long ss;
ss=sjsr.readLong();
System.out.println("ss="+ss);
//以上代码实现"接收"功能(输入)
}
}