日期:2014-05-20  浏览次数:20695 次

笨菜鸟求解各位大虾流问题第三季
package com.stream.test;
import java.io.*;
public class TestFileOutStream {

/**
* @param args
*/
public static void main(String[] args) {
FileOutputStream out = null;
FileInputStream in =null;
try
{
in = new FileInputStream("F:/123/456.txt");
out = new FileOutputStream("F:/123/99999.txt");
}catch(FileNotFoundException ee)
{
System.out.println("没有文件");
System.exit(-1);
}
try
{ int num=0;
int b =0;
//byte[] by = new byte[1024];
//while((b=in.read(by))!=-1)
while((b=in.read())!=-1)/*我的456.txt存的是“张小凡”,然后这个in.read()一次读一个字节,所以在(1)处输出的是一群问号,但是为什么我在out.write()写进去完整的“张小凡”难道这里不是一个一个字节的读么void write(int c) 
  写入单个字符。 Api对于write()的说法是每次写进一个字符,但是我从b那一次只得了一个字节呀,求解,求解*/

{System.out.println(b);
//System.out.print(by);//这里怎么才能把里面的内容显示出来呀,又不能强制转化成char型,求解求解
System.out.print((char)b);//(1)输出结果:?197 ?208 ?161 ?183 ·178 ?0
out.write(b);
//num++;
}
in.close();
out.close();
System.out.println(num);//这里计数看它一共读了多少回,结果jvm给我输出个0


}catch(IOException e)
{
System.out.println("没有复制成功");
System.exit(-1);
}
}
}

------解决方案--------------------
字节,字符,汉字字符,看来楼主对这些基本的概念的区别不甚明了,建议去看看相关资料
Ps:楼主该结贴啦,结贴率变红啦~
------解决方案--------------------
这问题要看你怎么想!!如果你单纯的想把文件复制到别一个地方是可以的!!用字节流就可以了!!
但如果你要在复制的时候在控制台输出查看!!那你就应该用字符流! 
OutputStreamWriter(OutputStream os)
InputStreamReader(InputSteram in)
这果一个思路!!要完整代码的话就是这样!!

关键部分!没测试!

FileInputStream fis=new FileInputStream("文件路径");
InputStreamReader isr=new InputStreamReader(fis);
int ch=isr.read();
System.out.print((char)ch);