A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

关于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();
   }
}

7 个回复

倒序浏览
字符流主要用于处理文字文件,而且也有相对应的功能,所以可以根据处理的文件类型而选择字符流与字节流。根据是否需要提高效率而选择缓冲区。这个毕老师的视频里讲过的。
回复 使用道具 举报
总结的好
回复 使用道具 举报
多谢提醒
回复 使用道具 举报
这个是必须掌握的。自己闭着眼睛要能敲出来
回复 使用道具 举报
恩 不错,不过毕老师的视频我还没有看到那里呢
回复 使用道具 举报
我才看到 数组,万里长征刚开始啊
回复 使用道具 举报
不知道面试主要都考哪些敲代码的内容?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马