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);
 }
}

  

你可能感兴趣的:(java)