关于io中复制的相关疑问,我发现在学习io时遇到的问题,同时,我发现这道题在面试中必考啊!
关于文本的复制是字符流
import java.io.*;
class CopyTextByBuf
{
public static void main(String[] args) throws IOException{
BufferedReader bufr = null;
BufferedWriter bufw = null;
bufr = new BufferedReader(new FileReader("BufferedWriterDemo.java"));
bufw = new BufferedWriter(new FileWriter("bufWriter_Copy.txt"));
String line = null;
while((line=bufr.readLine())!=null)
{
bufw.write(line);
bufw.newLine();
bufw.flush();
}
if(bufr!=null)
bufr.close();
}
而关于mp3和pic文件多采取的是字节流:
import java.io.*;
class Copy
{
public static void main(String[] args) throws IOException
{
copy_1();
}
public static void copy_1() throws IOException
{
BufferedInputStream bufis = new BufferedInputStream(new FileInputStream("c:\\0.mp3"));//这个里面的0.MP3,我试了一下,可以换成0.bmp,同时我还用copyMp3。java试了一下,都成功了,
BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream("c:\\1.mp3"));//
int by = 0;
while((by=bufis.read())!=-1)
{
bufos.write(by);
}
bufos.close();
bufis.close();
}
}
我在这里面尝试着把MP3文件改为了pic文件,并且成功了,这就像一个模板,我们以后写复制MP3和pic题目的时候,都可以用这个模板,这个时候我想既然字节流可以处理大多数的情况,我们知道一个字符是有两个字节组成,那么,为什么又会有字符流,字符流有什么特点和好处。
下面是关于复制的另一种形式,没有采用buffered这个缓冲区。
import java.io.*;
class Copy2
{
public static void main(String[] args)
{
FileOutputStream fos = null;
FileInputStream fis = null;
fos = new FileOutputStream("c:\\2.bmp");
fis = new FileInputStream("c:\\1.bmp");
byte[] buf = new byte[1024];
int len = 0;
while((len=fis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
}
if(fis!=null)
fis.close();
}
}
|
|