io流的使用Demo

       io包中有很多输入输出流的实现类,常用的就有:Buffered输入输出、ReaderWriter、File输入输出、InputStreamReader与OutputStreamWriter、对象序列反序列用的ObjectInputStream与ObjectOutputStream……。

       不过用法也大同小异,远没有看上去那么困难,不过是装饰者模式的又一具体应用。只要明白节点流、处理流的概念,加上装饰者模式,基本就没什么问题。

输入流常用方法:

 void close()
          关闭此输入流并释放与该流关联的所有系统资源。
abstract  int read()
          从输入流中读取数据的下一个字节。
 int read(byte[] b)
          从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。
 int read(byte[] b, int off, int len)
 

输出流方法

方法摘要
 void close()
          关闭此输出流并释放与此流有关的所有系统资源。
 void flush()
          刷新此输出流并强制写出所有缓冲的输出字节。
 void write(byte[] b)
          将b.length个字节从指定的 byte 数组写入此输出流。
 void write(byte[] b, int off, int len)
          将指定 byte 数组中从偏移量off开始的len个字节写入此输出流。
abstract  void write(int b)
          将指定的字节写入此输出流。

这是一个Demo:


/**
 *  拷贝文件夹(目前仅能从文件夹拷贝到文件夹,否则出错。)
 *  删除文件夹
 * 
 *
 * @author garview
 *
 * @Date  2013-11-3上午10:59:52
 */
public class IOUtil {

 public static void main(String[] args) throws IOException {
 
 // testCopyFile() ;
//  testCopyDir();
  testDeleteDir();
  
 }

 public static void testCopyDir() throws IOException{
  String srcPath = "C:/KuGou/test/FeiqCfg.xml";
  String destPath = "C:/KuGou/test/test";
  
  copyDir(srcPath,destPath);
 }
 
 
 public static void testDeleteDir(){
  File file = new File("C:/复件 复件 test");
  deleteDir(file);
 }
 
 
 //拷贝文件夹及里面所有文件
 //1.确定要拷贝的源文件夹路径及目标文件夹路径
 //2.遍历源文件夹——>1)文件——>拷贝2)文件夹——>递归调用自己
 public static void copyDir(String srcPath, String destPath) throws IOException{
  File src = new File(srcPath);
  File dest = new File(destPath);
  
  copyDir(src, dest);
 }
 public static void copyDir(File src, File dest) throws IOException {
  //确保文件夹src,dest存在
  if(!src.exists()){
   throw new FileNotFoundException(src.getAbsolutePath()+"找不到文件路径");
  }
  //确保文件夹src,dest不在同一路径下,防止死递归。
  if(dest.getAbsolutePath().contains(src.getAbsolutePath())){
   System.out.println("文件夹src,dest不能在同一路径下");
   return;
  }

  //目前仅能从文件夹拷贝到文件夹,否则出错。
 /* if(src.isFile()) {
   copyFile(src, dest); 
   return;
  }*/
  
  if(!dest.exists()) {
   dest.mkdirs();
  }
  /**
   * 遍历src文件夹
   * 1)文件——>拷贝
   * 2)文件夹——>递归调用自己
   */
  File[] files = src.listFiles();
  for(File temp : files) {
   File tempDest = new File(dest.getAbsolutePath(),temp.getName());
   System.out.println(tempDest.getAbsolutePath());
   if(temp.isFile()){
    //新的源及新的目标文件
    copyFile(temp, tempDest);
   }else if(temp.isDirectory()){
    //File tempSrc = new File(src.getAbsolutePath(),temp.getPath());
   // File tempDest = new File(dest.getAbsolutePath(),temp.getName());
    //System.out.println(tempDest.getAbsolutePath());
    copyDir(temp,tempDest);
   }
  }
 }
 
 public static void copyFile(File src, File dest) throws FileNotFoundException,IOException {
  FileInputStream fis = new FileInputStream(src);
  FileOutputStream fos = new FileOutputStream(dest);
  
  byte[] buffer = new byte[1024];
  int length = 0;
  while(-1!=(length = fis.read(buffer))){
   fos.write(buffer, 0, length);
  }
  fos.flush();
  fis.close();
  fos.close();
 }
 public static void testCopyFile() throws FileNotFoundException, IOException{
  File src = new File("C:/HelloWorld2.java");
  File dest = new File("C:/HelloWorld3.java");
  copyFile(src, dest);
 }
 
 public static void deleteFile(File file){
  boolean flag = file.delete();
  String msg =  file.getAbsolutePath();
  if(flag){
   msg += " delete success!";
  }else {
   msg += " delete failed!";
  }
  System.out.println(msg);
 }
 
 public static void deleteDir(File file){
  if(file.isFile()) {
   deleteFile(file);
   return;
  }
  if(file.isDirectory()){
   File[] files = file.listFiles();
   /*File[] files = file.listFiles(new FileFilter() {

    @Override
    public boolean accept(File pathname) {
     boolean flag = pathname.getAbsolutePath().contains("HelloWorld");
     return flag;
    }
    
    
   });*/
   
   for(File temp : files) {
    File tempDest = new File(file.getAbsolutePath(),temp.getName());
    if(temp.isFile()) {
     deleteFile(tempDest);
    } else if(temp.isDirectory()) {
     deleteDir(tempDest);
    }
   }
  }
  if(file.exists()) {
   deleteFile(file);
  }
 }

}

 

你可能感兴趣的:(输入输出流)