i/o流复制东西不是这样吗?

来源:百度知道 编辑:UC知道 时间:2024/07/01 11:33:43
package io;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;

public class Test
{
public static void main(String args[])
{
String s="";int i;
try {
FileInputStream in = new FileInputStream("d:\\mE3.jpg");
while((i=in.read())!=-1)
{
s=s+(char)i;
}
in.close();
} catch (FileNotFoundException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}

try {
FileOutputStream out = new FileOutputStream("e:\\me.jpg");
char[] c = s.toCh

....你们老师太人才了,字节流操作还用字符保存,正常来说,复制应该是边读边写的

FileInputStream in = new FileInputStream("d:\\mE3.jpg");
FileOutputStream out = new FileOutputStream("e:\\me.jpg");
// 二进制文件,用字节流,并且不要一次把所有数据读入到内存中,一次写1部分
// 这里一次写1K,保存到byte数组中
byte[] data = new byte[1024];
// 读入的数据数量,如果值为-1,则表示已经读完
int length = 0 ;
while((length=in.read(data))!=-1) {
// 写入这一部分
out.write(data,0,length);
}
// 关闭
in.close();
out.close();

你上边写的那个文件太大会死机的,而且效率非常低...