(一)将流转化为字符串--ByteArrayOutputStream的使用

/**
 * 将流转化为字符串
 */
public static String readInputStream(InputStream is){
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
   byte[] b = new byte[1024];
   int len = -1;
   try {
      while ((len = is.read(b))!=-1) {
         baos.write(b, 0, len);
      }
      baos.close();
   } catch (IOException e) {
      e.printStackTrace();
   } 
   return new String(baos.toByteArray());
}

(二)文件内容复制

public static void main(String[] args) {
   try {
      FileInputStream fis = new FileInputStream("MyInfo.txt");
      BufferedInputStream bis = new BufferedInputStream(fis);
      FileOutputStream fos = new FileOutputStream("NewsCopyText.txt");
      BufferedOutputStream bos = new BufferedOutputStream(fos);
      byte[] b = new byte[1024];
      // bis.read(b);
      // bos.write(b);
      System.out.println(bis.read(b));
      int len = -1;
      while ((len = bis.read(b)) != -1) {
         bos.write(b, 0, len);
      }
      fis.close();
      fos.close();
      bis.close();
      bos.close();
   } catch (Exception e) {
      e.printStackTrace();
   }
}

(三)隐藏技能介绍File类

/**
 * File类的构造函数有6个:
 * 
 * 1.public File(String pathname) //文件的绝对路径 2.public File(URI uri)
 * //文件的URI地址
 * 
 * 3.public File(String parent, String child) //指定父文件绝对路径、子文件绝对路径 4.public
 * File(File parent, String child) //指定父文件、子文件相对路径
 * 
 * 
 * 下面这两个是File类中私有的构造函数,外面不能调用 private File(String child, File parent)
 * private File(String pathname, int prefixLength)
 */

/**
 * 1.判断方法
 * 
 * boolean file.exists() //文件是否存在
 * 
 * boolean file.isFile() //是否是文件
 * 
 * boolean file.isDirectory() //是否是目录
 * 
 * boolean file.isHidden() //是否隐藏(windows上可以设置某个文件是否隐藏)
 * 
 * boolean file.isAbsolute() //是否为绝对路径
 * 
 * boolean file.canRead() //是否可读
 * 
 * boolean file.canWrite() //是否可写
 * 
 * boolean file.canExecute() //是否可执行
 */

/**
 * 2.获取文件的信息
 * 
 * String file.getName() //获取文件的名字,只是名字,没有路径
 * 
 * String file.getParent()
 * //获取父目录的绝对路径,返回值是一个字符串。如果文件有父目录,那么返回父目录的绝对路径,(比如:`E:\cat`) ,
 * 如果文件本身就在磁盘的根目录,那么返回磁盘的路径,(比如:`E:\`)。
 * 
 * File file.getParentFile() //获取父文件,返回值是一个File对象。
 * 
 * long time = file.lastModified() ; //返回文件最后一次修改的时间 Date dt = new
 * Date(time);
 * 
 * boolean renameTo(File file) //文件命名
 * 
 * long file.length() //返回文件的大小,单位字节
 * 
 * boolean file.delete() //删除文件
 * 
 * String[] file.list()
 * //获取该目录下的所有的文件的名字。如果`file`为文件,返回值为`null`,在使用时记得判空;但是如果
 * `file`为目录,那么返回这个目录下所有文件的名字
 * ,只是名字,不含路径;如果`file`是一个空目录,返回一个长度为0的数组;从上面的结果可以看出,`list()`
 * 方法,只是对`file`为目录时有效,当`file`为一个文件的时候,该方法毫无意义。
 * 
 * File[] file.listFiles()
 * //获取该目录下的所有的文件。如果`file`为文件,返回值为`null`,在使用时记得判空;但是如果
 * `file`为目录,那么返回这个目录下所有的文件
 * ;如果`file`是一个空目录,返回一个长度为0的数组;从上面的结果可以看出,`listFiles()`
 * 方法,只是对`file`为目录时有效,当`file`为一个文件的时候,该方法毫无意义。
 */

/**
 * 3.文件过滤 【FilenameFilter:这个类是文件名字过滤功能的】
 * 
 * file.list(FilenameFilter filter) ;
 * 
 * file.listFiles( FilenameFilter filter) ;
 * 
 * file.listFiles(FileFilter filter)
 */

public static void main(String[] args) {
   String filePath = "F:/";
   File file = new File(filePath);
   getFile(file);
}

/**
 * 扫描出指定路径的所有图片
 * 
 * @param file
 */
private static void getFile(File file) {
   MyFilenameFilter myFileFilter = new MyFilenameFilter(".png");

   File[] files = file.listFiles(myFileFilter);
   for (File f : files) {
      if (f.isHidden())
         continue;

      System.out.println(f.getAbsolutePath());
   }
}

static class MyFilenameFilter implements FilenameFilter {
   // type为需要过滤的条件,比如如果type=".jpg",则只能返回后缀为jpg的文件
   private String type;

   MyFilenameFilter(String type) {
      this.type = type;
   }

   @Override
   public boolean accept(File dir, String name) {
      // dir表示文件的当前目录,name表示文件名;
      return name.endsWith(type);
   }

}


至此有关IO流的介绍与使用暂告一段落了