有两个方法很像可是结果却是不一样的!
类 FileInputStream
java.lang.Object
- java.io.InputStream
- java.io.FileInputStream
int read()
从此输入流中读取一个数据字节。放到返回值是读到数据放到 int中的低8位,如果要显示char强转为字符输出。如果已到达文件末尾,则返回 -1。
int read(byte[] b)
从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。 这个返回值也是int,但这个int表示的是读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。
package com.io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 从一从文件中将内容读出到控制台,并写入到另外一个文件
*/
public class TestFileOutputStream {
public static void main(String[] args){
FileInputStream fis = null;
FileOutputStream fos = null;
int b = 0 ;
byte[] bytes = new byte[1024];
try {
fis = new FileInputStream("src/com/io/TestFileOutputStream.java");
fos = new FileOutputStream("src/com/io/fileoutput.txt");
/* while((b=fis.read()) != -1) {
//将读到的字节强转为字符打印
System.out.print((char)b);
//输出到文件
fos.write(b);
}*/
System.out.println("-------------------------------------------");
while((b=fis.read(bytes)) != -1) {
//定义一个字符串,接收byte数组长度为b
String s = new String(bytes, 0, b);
//将其打印到控制台
System.out.print(s);
//再输出到文件
fos.write(s.getBytes());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}