Topic: 有点不明白。。。希望指教

  Print this page

1.有点不明白。。。希望指教 Copy to clipboard
Posted by: zhjdenis
Posted on: 2007-09-22 21:30

我是实验书上的程序,可是不能通过运行,我用的环境是ECLIPSE,不知道为何,试了半天也没有搞出来。
package 缓冲区字节方式复制文件;
import java.io.BufferedOutputStream;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class BufferedStreamCopy {

  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO 自动生成方法存根
int size;
FileInputStream f=new FileInputStream("D:/Downloads/123.txt");
FileOutputStream fout=new FileOutputStream("D:/Downloads/321.txt");
BufferedInputStream bis=new BufferedInputStream(f);
BufferedOutputStream bos=new BufferedOutputStream(fout);
System.out.println("total available bytes:"+(size=bis.available()));
int n=size/30;
System.out.println("first"+n+"bytes of the file one read() at a time");
for(int i=0;i<n;i++)
{
   bos.write(bis.read());
}
System.out.println("still avaible:"+bis.available());
System.out.println("reading the next"+n+"with one read(b[])");
byte b[]=new byte[n];
if(bis.read(b)!=-1)
   System.out.println("couldn't read"+n+"bytes");
bos.write(b);
System.out.println("still availble:"+bis.available());
System.out.println("reading the rest bytes with read(b[],offset,len)");
int count=0;
while((count=bis.read(b, 0, n))!=-1)
bos.write(b, 0, count);
System.out.println("still avaible:"+bis.available());
bis.close();
bos.flush();
bos.close();
f.close();
fout.flush();
fout.close();
  }

}
运行结果:
Exception in thread "main" java.lang.Error: 无法解析的编译问题:
  未处理的异常类型 FileNotFoundException
  未处理的异常类型 FileNotFoundException
  未处理的异常类型 IOException
  未处理的异常类型 IOException
  未处理的异常类型 IOException
  未处理的异常类型 IOException
  未处理的异常类型 IOException
  未处理的异常类型 IOException
  未处理的异常类型 IOException
  未处理的异常类型 IOException
  未处理的异常类型 IOException
  未处理的异常类型 IOException
  未处理的异常类型 IOException
  未处理的异常类型 IOException
  未处理的异常类型 IOException
  未处理的异常类型 IOException
  未处理的异常类型 IOException
  未处理的异常类型 IOException

  at 缓冲区字节方式复制文件.BufferedStreamCopy.main(BufferedStreamCopy.java:15)

还想问一下,这个复制方式如果文件是中文内容可以么?谢谢!

2.Re:有点不明白。。。希望指教 [Re: zhjdenis] Copy to clipboard
Posted by: xuxiaolei
Posted on: 2007-09-24 07:59

你还没有编译通过里
public FileInputStream(String name) throws FileNotFoundException
会抛出异常,要么你在你的程序中捕获异常,要么就在你的方法外面抛出异常。
用这个方法可以复制中文内容。还有,为什么要把简单的内容复杂化呢?

public static void readAndFile(String inFilePath, String outFilePath) throws FileNotFoundException, IOException
{
FileInputStream fis = new FileInputStream(inFilePath);
FileOutputStream fos = new FileOutputStream(outFilePath);

byte[] buffer = new byte[1024];

int v = fis.read(buffer);

while(v != -1)
{
fos.write(buffer, 0, v);
fos.flush();
v = fis.read(buffer);
}

fis.close();
fos.close();
}


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923