IO流:概括为两个对应,一个桥梁。
1.按照功能来划分:
输入流:只能从中读取数据,而不能向其写入数据。
输出流:只能向其写入数据,而不能从中读取数据。
2.按照处理单元来划分
字节流和字符流操作的方式基本上完全相同。操作的数据单元不同
字节流:操作的是8位的字节 InputStream/OutputStream 作为字节流的基类
字符流:操作的是16位的字符 Reader/Writer 作为字符流的基类
Fileinputstream FileOutputStream不带缓冲区的字节流
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("D:\\img2.jpg");
FileOutputStream fos = new FileOutputStream("D:\\gg.jpg");
byte[] b = new byte[1024];
int a = 0;
while ((a=fis.read(b))!=-1){
fos.write(b,0,a);
}
} catch (IOException e) {
e.printStackTrace();
}
}
BufferedInputStream bufferedOutputStream 带缓冲区的字节流
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("d:\\img2.jpg");
FileOutputStream fos = new FileOutputStream("d:\\buy.jpg");
BufferedInputStream bis=new BufferedInputStream(fis);
BufferedOutputStream bos=new BufferedOutputStream(fos);
byte[] b =new byte[1024];
int a = 0;
while ((a=fis.read(b))!=-1){
bos.write(b,0,a);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
FileReader FileWriter 不带缓冲区的字符流
BufferedReader BufferedWriter 带缓冲区的字节流
public static void main(String[] args) {
BufferedReader br=null;
BufferedWriter bw=null;
InputStream in;
br=new BufferedReader(new InputStreamReader(System.in));
try {
bw=new BufferedWriter(new FileWriter(new File("d:\\ccc.txt"),true));
String temp="";
System.out.println("请开始你的表演");
while ((temp=br.readLine())!=null){
if (temp.equals("quit")){
break;
}
bw.write(temp);
bw.newLine();
}
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}