当前位置: 代码迷 >> J2SE >> 请问new FileInputStream().read()的有关问题
  详细解决方案

请问new FileInputStream().read()的有关问题

热度:515   发布时间:2016-04-24 02:01:14.0
请教new FileInputStream().read()的问题
import java.io.*;
public class FileOutputStream3
{
  public static void main(String[] args)throws Exception 
  { File f1=new File("c:\\c.txt");
  File f2=new File("c:\\a.txt"); // c.txt,里的内容是1234567890  
FileInputStream fis=new FileInputStream(f1);
  FileOutputStream fos=new FileOutputStream(f2,false);  
  char ch;
  byte[] b=new byte[(int)f1.length()];
// byte[] b=new byte[f1.length()];
  System.out.println(fis.read(b,0,10)); //这里为什么会输出的是10??
  fis.read(b,0,10);
// System.out.println(fis.read(b,5,3)); //这里为什么会输出的是49?? System.out.println(b[0]);  
  for(int i=0;i<f1.length();i++)
  {  
  ch=(char)fis.read();
  fos.write(b[i]);
  System.out.println(b[i]); //这里为什么输出49,50,51....... ??
  }
// System.out.println(fis.read(b,5,3)); //而这里又输出0??  
  fos.close(); //关闭
  }
}


输出的不应该是个位数吗?怎么会是两位数??

------解决方案--------------------
Java code
System.out.println(fis.read(b, 0, 10)); // 这里为什么会输出的是10??这里独到10个字节,因此fis.read(b, 0, 10)返回的值是10System.out.println(b[i]); // 这里为什么输出49,50,51....... ??这里读到的是Ascii码的0123456789,转成int就是对应就是48到57System.out.println((char)b[i]);这样打印就是0123456789了
  相关解决方案