FileInputStream fInStream=new FileInputStream("c:\\1.doc");
FileOutputStream fOutStream=new FileOutputStream("C:\\4.doc");
long charSize=fInStream.available();
System.out.println("要复制的文件的字节数为:"+charSize);
for(long i=0;i<=charSize;i++)
{
//byte c=(byte)fInStream.read();
//char c=(char)fInStream.read();
int c=(int)fInStream.read();//上面三行,选用任意一行,都能正常地执行并且复制程序,所以我很想知道三种类型的区别在哪
fOutStream.write(c);
} fOutStream.write(c);
}最好能用程序举个例子出来说明,谢谢。
FileOutputStream fOutStream=new FileOutputStream("C:\\4.doc");
long charSize=fInStream.available();
System.out.println("要复制的文件的字节数为:"+charSize);
for(long i=0;i<=charSize;i++)
{
//byte c=(byte)fInStream.read();
//char c=(char)fInStream.read();
int c=(int)fInStream.read();//上面三行,选用任意一行,都能正常地执行并且复制程序,所以我很想知道三种类型的区别在哪
fOutStream.write(c);
} fOutStream.write(c);
}最好能用程序举个例子出来说明,谢谢。
write
public void write(int b)
throws IOException
public int read()
throws IOException
Reads a byte of data from this input stream. This method blocks if no input is yet available. Specified by:
read in class InputStream
Returns:
the next byte of data, or -1 if the end of the file is reached.
Throws:
IOException - if an I/O error occurs.FileInputStream的read方法就是一次读取一个字节, 在这种情况下用哪个都没区别, 因为在JAVA中char点两个byte, int占四个byte, 都可以放置一个byte而不丢失任何信息. 当然用char和int浪费了一点点内存空间, 不过太小了可以忽略.
如果某个读取方法一次读取大于一个字节, 就不能用byte来存了, 因为会丢失信息导致结果不正确.
FileOutputStream fOutStream = new FileOutputStream("C:\\4.doc");
long charSize = fInStream.available();
System.out.println("要复制的文件的字节数为:" + charSize); for (long i = 0; i <= charSize; i++) {
byte c = (byte) fInStream.readChar();
// byte c = (byte) fInStream.read();
// char c=(char)fInStream.read();
// int c=(int)fInStream.read(); // 上面三行,选用任意一行,都能正常地执行并且复制程序,所以我很想知道三种类型的区别在哪
fOutStream.write(c);
}这回还用byte就出错了.
而流又分为字节流和字符流
如果用InputStream来读取的话,是以字节流的形式所以,
接受形式可以是byte或者向上兼容的类型如果像楼上那样用DataInputStream把流包装后就是以字符流的形式读取
所以再次用byte时就会出错了!不知楼主明白否!