上传sftp,创建20171024目录,判断目录是否存在,复制文件,判断文件字符集
来源:互联网 发布:贵州 大数据大诚信 编辑:程序博客网 时间:2024/06/04 19:17
上传sftp,创建20171024目录,判断目录是否存在,复制文件,判断文件字符集
public class UpLoadFile {
private static final String GBK = “GBk”;
public static void main(String[] args) {
String sPath = “D://tempPath//20171023014826qbfk”;
Date date = new Date();
String sftpPath = CommonUtil.getPropertiesValue(“sftp.properties”, “tengbang.test”)+”/”+new SimpleDateFormat(“yyyyMMdd”).format(date);
upLoadFile(sPath, sftpPath);
}
public static void upLoadFile(String sPath, String sftpPath) { /*//2创建文件夹存放影响文件 Date date = new Date(); String path= ConfigUtil.getConfig(Constants.DirPath.COMMON_TEMP) + File.separator+new SimpleDateFormat("yyyyMM/dd").format(date); //创建文件夹 File file2 = new File(path); if (!file2.exists() && !file2.isDirectory()) { file2.mkdirs(); // 没有则创建 }*/ Channel channel = null; try { Date date = new Date(); SFTPUtils sftp1 = getSftp(); sftpPath = CommonUtil.getPropertiesValue("sftp.properties", "upload")+"/"+new SimpleDateFormat("yyyyMMdd").format(date); ChannelSftp sftp = sftp1.getSFTPClient(); //创建路径 String rpath = sftpPath; try { createDir(rpath, sftp); } catch (Exception e) { e.printStackTrace(); throw new SystemException("创建路径失败:" + rpath); } sftp.cd(sftpPath); File file = new File(sPath); String path = file.getAbsolutePath(); System.out.println("path"+path); copyFile(sftp, file, sftp.pwd()); } catch (Exception e) { e.printStackTrace(); } }/** * 创建一个文件目录 * @throws SystemException */ public static void createDir(String createpath, ChannelSftp sftp) throws SystemException { try { if (isDirExist(createpath,sftp)) { }else{ String pathArry[] = createpath.split("/"); for (String path : pathArry) { if (path.equals("")) { continue; } if (isDirExist(path,sftp)) { sftp.cd(path); if (isDirExist(createpath, sftp)) { } } else { // 建立目录 sftp.mkdir(path); // 进入并设置为当前目录 sftp.cd(path); } } } System.out.print(sftp.pwd()); //sftp.cd(createpath); } catch (SftpException e) { throw new SystemException("创建路径错误:" + createpath); } } /** * 判断目录是否存在 */ public static boolean isDirExist(String directory,ChannelSftp sftp) { boolean isDirExistFlag = false; try { SftpATTRS sftpATTRS = sftp.lstat(directory); isDirExistFlag = true; return sftpATTRS.isDir(); } catch (Exception e) { if (e.getMessage().toLowerCase().equals("no such file")) { isDirExistFlag = false; } } return isDirExistFlag; } private static SFTPUtils getSftp() { Properties prop = new Properties(); ClassPathResource cp = new ClassPathResource("sftp.properties"); try { prop.load(cp.getInputStream()); } catch (IOException e) { e.printStackTrace(); } String host = prop.getProperty("yibin.host").trim(); int port = Integer.parseInt(prop.getProperty("yibin.port").trim()); String username = prop.getProperty("yibin.username").trim(); String password = prop.getProperty("yibin.password").trim(); return new SFTPUtils(host, port, username, password);}public static void copyFile(ChannelSftp sftp, File file, String pwd) throws IOException { if (file.isDirectory()) { File[] list = file.listFiles(); try { try { String fileName = file.getName(); sftp.cd(pwd); System.out.println("正在创建目录:" + sftp.pwd() + "/" + fileName); sftp.mkdir(fileName); System.out.println("目录创建成功:" + sftp.pwd() + "/" + fileName); } catch (Exception e) { } pwd = pwd + "/" + file.getName(); try { sftp.cd(file.getName()); } catch (SftpException e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } for (int i = 0; i < list.length; i++) { copyFile(sftp, list[i], pwd); } } else { try { sftp.cd(pwd); } catch (SftpException e1) { e1.printStackTrace(); } System.out.println("正在复制文件:" + file.getAbsolutePath()); InputStream instream = null; OutputStream outstream = null; try { //String FileName = file;; //查看编码 String charset = get_charset(file); //String filename = new String (file.getName().getBytes("GBK"),"gb2312"); // String filename = new String(bytes,"ISO-8859-1"); //String string = new String (filename.getBytes("ISO-8859-1"),"gb2312"); //String string2 = new String (string.getBytes("GBK"),"gb2312"); //String string=new String(new String(file.getBytes(), "ISO-8859-1").getBytes(),"gb2312"); /*System.out.println("string+"+filename); outstream = sftp.put(fileName);*/ instream = new FileInputStream(file); byte b[] = new byte[1024]; int n; try { while ((n = instream.read(b)) != -1) { outstream.write(b, 0, n); } } catch (IOException e) { e.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); } finally { try { outstream.flush(); outstream.close(); instream.close(); } catch (Exception e2) { e2.printStackTrace(); } } }}private static String get_charset(File file) { String charset = "GBK"; byte[] first3Bytes = new byte[3]; try { boolean checked = false; ; BufferedInputStream bis = new BufferedInputStream( new FileInputStream(file)); bis.mark(0); int read = bis.read(first3Bytes, 0, 3); if (read == -1) return charset; if (first3Bytes[0] == (byte) 0xFF && first3Bytes[1] == (byte) 0xFE) { charset = "UTF-16LE"; checked = true; } else if (first3Bytes[0] == (byte) 0xFE && first3Bytes[1] == (byte) 0xFF) { charset = "UTF-16BE"; checked = true; } else if (first3Bytes[0] == (byte) 0xEF && first3Bytes[1] == (byte) 0xBB && first3Bytes[2] == (byte) 0xBF) { charset = "UTF-8"; checked = true; } bis.reset(); if (!checked) { // int len = 0; int loc = 0; while ((read = bis.read()) != -1) { loc++; if (read >= 0xF0) break; if (0x80 <= read && read <= 0xBF) // 单独出现BF以下的,也算是GBK break; if (0xC0 <= read && read <= 0xDF) { read = bis.read(); if (0x80 <= read && read <= 0xBF) // 双字节 (0xC0 - 0xDF) // (0x80 // - 0xBF),也可能在GB编码内 continue; else break; } else if (0xE0 <= read && read <= 0xEF) {// 也有可能出错,但是几率较小 read = bis.read(); if (0x80 <= read && read <= 0xBF) { read = bis.read(); if (0x80 <= read && read <= 0xBF) { charset = "UTF-8"; break; } else break; } else break; } } } bis.close(); } catch (Exception e) { e.printStackTrace(); } return charset; }
}`
阅读全文
0 0
- 上传sftp,创建20171024目录,判断目录是否存在,复制文件,判断文件字符集
- VC(MFC)判断文件/目录是否存在,创建目录
- 判断文件或文件目录是否存在
- 获取应用程序目录,判断文件是否存在
- VC判断文件目录是否存在
- shell判断文件,目录是否存在
- [IO]判断文件或者目录是否存在
- shell 判断文件、目录是否存在
- VC判断文件目录是否存在
- shell 判断文件、目录是否存在
- pyhton 判断文件 或 目录是否存在
- php 判断文件或目录是否存在
- PHP如何判断文件、目录是否存在?
- shell判断hdfs文件目录是否存在
- shell判断文件或目录是否存在
- shell判断hdfs文件目录是否存在
- shell 判断文件、目录是否存在
- shell 判断文件、目录是否存在
- Logistic回归与Softmax回归
- 转载: 用 C# 做人脸检测(基于EmguCV)
- D12函数
- Webservice-cxf:Could not find portType named {http://impl.client.tianyuan.com/}SchedulerService
- python3 常见函数 map、reduce、filter、lambda、sorted
- 上传sftp,创建20171024目录,判断目录是否存在,复制文件,判断文件字符集
- D13递归
- SpringMVC上传图片总结(1)-Web Uploader--常规方法进行图片上传,使用了MultipartFile、MultipartHttpServletRequest
- fedora26下安装和配置openldap(1)
- Tera term串口下发AT命令测试
- MATLAB编译libsvm出现问题
- 数据结构第五版第二章实验1.实现顺序表的各种基本运算
- 正则获取字符串中图片路径
- winform与unity之间的Socket通讯