IO基础学习总结
1.InputStream是一个抽象类,它有多种具体的实现类
1.FileInputStream文件输入流
2.AudioInputStream音频输入流
3.ByteArrayInputStream
4.FilterInputStream过滤输入流
5.ObjectInputStream对象输入流
6.PipedInputStream管道输入流
7.SequenceInputStream
8.StringBufferInputStream
2.FileInputStream
1.FileInputStream 是InputStream的一个直接子类,可用于构造从文件中读到数据的流。
2.常用构造器:
1.FileInputStream(File file):通过一个文件对象作为参数构造输入流对象
2.FileInputStream(String path):通过一个文件路径字符串构造连接到指定文件的输入流
示例:
String str1 = "D:\\My Documents\\Test1.txt";
String str2 = "D:\\My Documents\\Test2.txt";
java.io.FileInputStream fis = new java.io.FileInputStream(str1);//用文件路径名字符串作为参数创建文件输入流
//创建文件对象
java.io.File file = new java.io.File(str2);
java.io.FileInputStream fos = new java.io.FileInputStream(file);//用文件对象作为参数创建文件输入流对象
3.方法使用示例
public class IOTest {
/**
* FileInputStream类中方法的测试
*
* @param args
*/
public static void main(String[] args) {
// 取得系统的路径分隔符
String s = java.io.File.separator;
// 文件路径名字符串
String path = "D:" + s + "My Documents" + s + "StudySample" + s + "src"
+ s + "cn" + s + "xmh" + s + "IOstudy0406" + s + "testtext";
// 创建文件对象
java.io.File file = new java.io.File(path);
try {
// 定义一个字节数组
byte[] b1 = new byte[(int) file.length()];
// 用文件对象作为参数创建文件输入流对象
java.io.FileInputStream fis = new java.io.FileInputStream(file);
// available()-->返回可以从该输入流中读取的字节数
int available = fis.available();
System.out.println("首次检测输入流中可读字节数" + available);
// read()-->从输入流中读取一个字节,返回值为int类型
// skip(long n)-->从输入流中跳过并丢弃 n 个字节的数据
long l = fis.skip(100);
System.out.println("实际跳过输入流中的字节数" + l);
available = fis.available();
System.out.println("此时输入流中可读字节数" + available);
// read(byte[] b)-->从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。
fis.read(b1);
// 输出字节数组所表示的字符串
print(b1);
byte[] b2 = new byte[fis.available()];
/**
* public int read(byte[] b,int off,int len) 从此输入流中将最多 len
* 个字节的数据读入一个 byte 数组中。
*
* @param b
* - 存储读取数据的缓冲区。
* @param off
* - 目标数组 b 中的起始偏移量。
* @param len
* - 读取的最大字节数。
*/
// fis.read(b2, 7, 5);
// print(b2);
// 关闭输入流
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// 输出字节数组所表示的字符串的方法
public static void print(byte[] b) {
String str = new String(b);
System.out.println(str);
}
}