java学习总结(IO基础学习)
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); }}??