文件格式转换

org.apache.hadoop.hive.ql.util.DosToUnix


//将window格式文件转换为unix格式

public static String convertWindowsScriptToUnix(File windowsScriptFile) throws Exception {
    String windowsScriptFilename = windowsScriptFile.getName();
    String unixScriptFilename = getUnixScriptNameFor(windowsScriptFilename);
    File unixScriptFile = null;
    if (windowsScriptFile.getParent() != null) {
      unixScriptFile = new File(windowsScriptFile.getParent() + "/" + unixScriptFilename);
    } else {
      unixScriptFile = new File(unixScriptFilename);
    }
    BufferedWriter writer = new BufferedWriter(new FileWriter(unixScriptFile));
    try {
      BufferedReader reader = new BufferedReader(new FileReader(windowsScriptFile));
      try {
        int prev = reader.read();
        int next = reader.read();
        while( prev != -1 ) {
          if ( prev != -1 && ( prev != '\r' || next != '\n' ) ) {
            writer.write(prev);
          }
          prev = next;
          next = reader.read();
        }
      }
      finally {
        reader.close();
      }
    }
    finally {
      writer.close();
    }
    unixScriptFile.setExecutable(true);
    return unixScriptFile.getAbsolutePath();
  }


//判断文件格式

 public static boolean isWindowsScript(File file) {
    BufferedReader reader = null;
    try {
      reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
      char[] buffer = new char[4096];
      int readLength = reader.read(buffer);
      if (readLength >= 2 && buffer[0] == '#' && buffer[1] == '!') {
        for(int i=2; i<readLength; ++i) {
          switch(buffer[i]) {
          case '\r':
            return true;
          case '\n':
            return false;
          }
        }
      }
    } catch (Exception e) {
      // It means, It is not a valid windows script file so ignore the exception and return false.
    } finally {
      if (reader != null) {
        try {
          reader.close();
        }catch (Exception e) {
        }
      }
    }
    return false;
  }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值