java基础知识回顾之javaIO类---FileInputStream和FileOutputStream字节流复制图片
package com.lp.ecjtu;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
*
* @author Administrator
* 1.用字节读取流对象和图片相关联(输入流)
* 2.用字节写入流对象创建一个图片文件。用于存储获取到的图片数据(输出流)
* 3.通过循环读写,完成数据的储存
* 4.关闭资源
*
*/
public class CopyPicStream {
/**
* @param args
*/
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("d:\\1.jpg");//读取图像数据之类的原始字节流
fos = new FileOutputStream("2.bmp");//用于写入诸如图像数据之类的原始字节流
byte[] b = new byte[1024];
int len = 0;
while ((len=fis.read(b)) != -1){
fos.write(b);
}
}catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
throw new RuntimeException("复制图片失败!");
}finally{
try {
if(fis != null){
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if(fos != null){
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
java基础知识回顾之javaIO类---InputStreamReader和OutputStreamWriter转化流
InputStreamReader:是字节流通向字符流的桥梁;
OutputStreamWriter 是字符流通向字节流的桥梁;
package com.lp.ecjtu;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
public class SystemReadInKeyTranfer {
/**
* 1.源:键盘
* 目的:控制台
* 2.源:键盘录入:把键盘录入的数据存储到一个文件中
* 目的:文件
* 3.源:文件:将文件中的数据打印在控制台上
* 目的:控制台
* 流操作的基本流程:
* 通过两个明确来完成
* 1 明确源和目的
* 源:输入流,InputStream Reader
* 目的:输出流 :outputStream Writer
* 2.操作的是否为纯文本
* 是:字符流
* 不是:字节流
* 3.当体系明确后,在明确使用哪个具体的对象。
* 通过来设备来区分:
* 源设备:内存,硬盘,键盘
* 目的:内存,硬盘,控制台
* 1.将一个文本文件中的数据存储到另一个文件。复制文件。
* 源:因为是源,所以使用读取流。InputStream Reader
* 是文本文件:这是可以选择Reader
* 明确设备:硬盘上的一个文件
* Reader体系中可以操作文件的FileReader
* 是否提高效率,是,加入Reader体系中的BufferedReader
* FileReader fr = new FileReader("a.txt");
* BufferedReader buffr = new BufferedReader(fr);
*
* 目的:outputStream Writer
* 是否为纯文本,是!用字符流 Reader.
* 设备:硬盘上的文件.
* Writer体系中可以操作文件的FileWriter
* 是否提高效率,是,加入Writer体系中的BufferedWriter
* FileWriter fr = new FileWriter("a.txt");
* BufferedWriter buffr = new BufferedWriter(fr);
*
* 2.将一个图片文件中的数据存储到另一个文件。复制文件。
*/
public static void main(String[] args){
BufferedReader bufferr = null;
BufferedWriter bufferw = null;
try {
//将System.in->InputStream->Reader对象
//将Reader对象包装成BufferedReader对象
//键盘录入
/*bufferr =
new BufferedReader(new InputStreamReader(System.in));
//把键盘录入的数据存储到out.txt文件当中
bufferw=
new BufferedWriter(new OutputStreamWriter(new FileOutputStream("out.txt")));
*/
//将文件中的数据与bufferedReader相关联,InputStreamReader字节向字符转化的桥梁。
bufferr =
new BufferedReader(new InputStreamReader(new FileInputStream("FileReaderDemo.java")));
//将文件的数据打印到控制台,OutputStreamWriter字符向字节转化的桥梁
bufferw = new BufferedWriter(new OutputStreamWriter(System.out));
String line = null;
//采用循环的方式逐个读取
while((line=bufferr.readLine())!=null){
//如果读取的字符串为“over”的时候,则程序退出
if(line.equals("over")){
System.exit(-1);//或者用break
}
//打印读取的内容
//System.out.println(line.toUpperCase());
//使用字符输出流进行输出
bufferw.write(line.toUpperCase());
bufferw.newLine();//跨平台换行,不用'\r\n'
bufferw.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(bufferr != null){
bufferr.close();
}
if(bufferw != null){
bufferw.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
java基础知识回顾之javaIO类---BufferedInputStream和BufferedOutputStream
MP3的复制过程:
package com.lp.ecjtu;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
*
* @author Administrator
* 演示MP3的复制
* BufferedOutputStream
* BufferedInputStream
*
*/
public class CopyMp3Stream {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
long startTime = System.currentTimeMillis();
copy_1();
long endTime = System.currentTimeMillis();
System.out.println("共耗费"+(endTime-startTime)+"毫秒");
}
public static void copy_1() throws IOException{
//创建一个内部缓冲数组,读硬盘中的数据到缓冲区中,字节流缓冲区
BufferedInputStream bufIos = new BufferedInputStream(new FileInputStream("D:\\1.mp3"));
BufferedOutputStream buffos = new BufferedOutputStream(new FileOutputStream("2.mp3"));
int by = 0;
while((by=bufIos.read()) != -1){//读取缓冲区的数据到输入流中
buffos.write(by);//对输出流进行写操作
}
buffos.close();
bufIos.close();
}
}
