字节输入流:InputStream
public abstract class InputStream extends InputStream |
package obc17;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class OopDemo04 {
public static void main(String[] args) {
String path = "E:\\Maori";
File txtFile = new File(path+"\\IODemo.txt");
InputStream in = null;
try {
in = new FileInputStream(txtFile);
byte b[] = new byte[1024];
in.read(b);
System.out.println(new String(b));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
以上的程序有一个问题,就是定义的字节数组无法精确的设置大小,因为我们并不知道文件中流的数据大小,特别是如果文件中存在中文,还可能出现乱码。在这情况下我们可以根据文件的大小来决定字节数组的长度。
package obc17;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class OopDemo04 {
public static void main(String[] args) {
String path = "E:\\Maori";
File txtFile = new File(path+"\\IODemo.txt");
InputStream in = null;
try {
in = new FileInputStream(txtFile);
byte b[] = new byte[(int) txtFile.length()];
in.read(b);
System.out.println(new String(b));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}