content: package com.alipay.bluewhale.core.utils;
  
  import java.io.File;
  import java.io.IOException;
  import java.util.ArrayList;
  import java.util.List;
  
  import org.apache.commons.io.FileUtils;
  import org.apache.log4j.Logger;
  /**
   *  ļϵͳ·صĲװ
   * @author yannian
   *
   */
  public class PathUtils {
      static Logger LOG = Logger.getLogger(PathUtils.class);
  
      /**
       * ·ָΪ
       * 
       * @param path
       * @return
       */
      public static List<String> tokenize_path(String path) {
          String[] toks = path.split("/");
          java.util.ArrayList<String> rtn = new ArrayList<String>();
          for (String str : toks) {
              if (!str.isEmpty()) {
                  rtn.add(str);
              }
          }
          return rtn;
      }
  
      public static String toks_to_path(List<String> toks) {
          StringBuffer buff = new StringBuffer();
          buff.append("/");
          int size = toks.size();
          for (int i = 0; i < size; i++) {
              buff.append(toks.get(i));
              if (i < (size - 1)) {
                  buff.append("/");
              }
  
          }
          return buff.toString();
      }
  
      public static String normalize_path(String path) {
          String rtn = toks_to_path(tokenize_path(path));
          return rtn;
      }
  
      public static String parent_path(String path) {
          List<String> toks = tokenize_path(path);
          int size = toks.size();
          if (size > 0) {
              toks.remove(size - 1);
          }
          return toks_to_path(toks);
      }
  
      public static String full_path(String parent, String name) {
          return normalize_path(parent + "/" + name);
      }
  
      public static boolean exists_file(String path) {
          return (new File(path)).exists();
      }
  
      public static void rmr(String path) throws IOException {
          LOG.debug("Rmr path " + path);
          if (exists_file(path)) {
              FileUtils.forceDelete(new File(path));
          }
  
      }
  
      public static void local_mkdirs(String path) throws IOException {
          LOG.debug("Making dirs at" + path);
          FileUtils.forceMkdir(new File(path));
      }
  
      public static void rmpath(String path) {
          LOG.debug("Removing path " + path);
          boolean isdelete = (new File(path)).delete();
          if (!isdelete) {
              throw new RuntimeException("Failed to delete " + path);
          }
      }
  
      public static void touch(String path) throws IOException {
          LOG.debug("Touching file at" + path);
          boolean success = (new File(path)).createNewFile();
          if (!success) {
              throw new RuntimeException("Failed to touch " + path);
          }
      }
  
      public static List<String> read_dir_contents(String dir) {
          ArrayList<String> rtn = new ArrayList<String>();
          if (exists_file(dir)) {
              File[] list = (new File(dir)).listFiles();
              for (File f : list) {
                  rtn.add(f.getName());
              }
          }
          return rtn;
      }
  
  }
  