java如何操作服务器文件夹,java通过sftp对linux服务器文件夹进行操作

本文主要讲sftp对linux服务器的文件和文件夹进行操作,windows server 服务器不支持。package com.lx.ftp;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.util.List;

import java.util.Properties;

import java.util.Vector;

import com.jcraft.jsch.Channel;

import com.jcraft.jsch.ChannelSftp;

import com.jcraft.jsch.JSch;

import com.jcraft.jsch.JSchException;

import com.jcraft.jsch.Session;

import com.jcraft.jsch.SftpException;

public class SftpUtil {

/**

*

* @param host

* @param port

* @param username

* @param password

* @return

* @throws JSchException

*/

public ChannelSftp connect(String host, int port, String username,String password) throws JSchException {

// 1.声明连接Sftp的通道

ChannelSftp nChannelSftp = null;

// 2.实例化JSch

JSch nJSch = new JSch();

// 3.获取session

Session nSShSession = nJSch.getSession(username, host, port);

System.out.println("Session创建成功");

// 4.设置密码

nSShSession.setPassword(password);

// 5.实例化Properties

Properties nSSHConfig = new Properties();

// 6.设置配置信息

nSSHConfig.put("StrictHostKeyChecking", "no");

// 7.session中设置配置信息

nSShSession.setConfig(nSSHConfig);

// 8.session连接

nSShSession.connect();

System.out.println("Session已连接");

// 9.打开sftp通道

Channel channel = nSShSession.openChannel("sftp");

// 10.开始连接

channel.connect();

nChannelSftp = (ChannelSftp) channel;

System.out.println("连接到主机" + host + ".");

return nChannelSftp;

}

/**

* 文件重命名

* @param directory

* @param oldname

* @param newname

* @param sftp

*/

public void renameFile(String directory, String oldname, String newname,ChannelSftp sftp) {

try {

sftp.cd(directory);

sftp.rename(oldname, newname);

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 上传文件

* @param directory

* @param uploadFile

* @param sftp

*/

public void upload(String directory, String uploadFile, ChannelSftp sftp) {

try {

sftp.cd(directory);

File file = new File(uploadFile);

sftp.put(new FileInputStream(file), file.getName());

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 下载文件

* @param directory

* @param downloadFile

* @param saveFile

* @param sftp

*/

public void download(String directory, String downloadFile,String saveFile, ChannelSftp sftp) {

try {

sftp.cd(directory);

File file = new File(saveFile);

sftp.get(downloadFile, new FileOutputStream(file));

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 删除文件

* @param directory

* @param deleteFile

* @param sftp

*/

public void delete(String directory, String deleteFile, ChannelSftp sftp) {

try {

sftp.cd(directory);

sftp.rm(deleteFile);

System.out.println("删除成功");

} catch (Exception e) {

System.out.println("删除失败");

e.printStackTrace();

}

}

/**

* 列出列表下的文件

* @param directory

* @param sftp

* @return

* @throws SftpException

*/

public Vector listFiles(String directory, ChannelSftp sftp)throws SftpException {

return sftp.ls(directory);

}

/**

* 下载文件夹下面的所有文件

*

* @param viDirectory

* @param viHost

* @param viPort

* @param viUserName

* @param viPassWord

* @param viSaveDir

* @return

*/

public List downloadDirFile(String viDirectory, String viHost,int viPort, String viUserName, String viPassWord, String viSaveDir) {

ChannelSftp nChannelSftp = null;

List nFileNameList = null;

try {

// 1.实例化nSftpUtil工具类

SftpUtil nSftpUtil = new SftpUtil();

// 2.建立Sftp通道

nChannelSftp = nSftpUtil.connect(viHost, 22, viUserName, viPassWord);

// 3.获取目录下面所有文件

Vector nVector = nChannelSftp.ls(viDirectory);

// 4.循环遍历文件

for (int i = 0; i < nVector.size(); i++) {

// 5.进入服务器文件夹

nChannelSftp.cd(viDirectory);

// 6.实例化文件对象

String nFileName = nVector.get(i).toString().substring(56, nVector.get(i).toString().length());

if (!nFileName.contains("csv")) {

continue;

}

File nFile = new File(viSaveDir + File.separator + nFileName);

// 7.下载文件

nChannelSftp.get(nFileName, new FileOutputStream(nFile));

}

} catch (Exception e) {

e.printStackTrace();

} finally {

nChannelSftp.disconnect();

}

return nFileNameList;

}

public static void main(String[] args) throws JSchException {

SftpUtil sf = new SftpUtil();

}

}

maven依赖

com.jcraft

jsch

0.1.54

java实现sftp客户端上传文件夹的功能

使用的jar: jsch

设置linux服务器文件夹权限

最近搞的网站一上传图片,就报500错误.经排查是服务器文件夹权限设置问题. 使用命令: chmod o+rwx avatar 即可改变文件夹权限设置.

java使用sftp下载远程服务器文件

使用的是springboot的项目,只是贴出主要配置与类,代码较长,可以先折叠: 参考:https://www.cnblogs.com/xyzq/p/7049369.html 操作工具类SftpUti ...

atitit&period; web 在线文件管理器最佳实践&lpar;1&rpar;--- elFinder 的使用流程解决之道 。打开浏览服务器文件夹java &period;net php

atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 .打开浏览服务器文件夹java .net php 1. 环境:::项目java web,需要打开浏览服 ...

java项目发布到linux服务器,tomcat正常启动但没加载项目

问题描述: java项目发布到linux服务器,一切操作正确,linux命令启动tomcat后,查看日志启动tomcat正常,上传的war包已经解压成功,但是tomcat没加载项目. 解决方法: 1. ...

Java实现windows,linux服务器word,excel转为PDF;aspose-words,Documents4j

Java实现windows,linux服务器word,excel转为PDF:aspose-words,Documents4j 一.通过aspose-words将word,Excel文档转为PDF 1. ...

SFTP上传下载文件、文件夹常用操作

SFTP上传下载文件.文件夹常用操作 1.查看上传下载目录lpwd 2.改变上传和下载的目录(例如D盘):lcd  d:/ 3.查看当前路径pwd 4.下载文件(例如我要将服务器上tomcat的日志文 ...

Java IO&lowbar;001&period;File类--文件或文件夹相关操作

Java IO之File对象常用操作 File类:用于文件或文件夹或网址相关联的操作.可以关联或不关联文件(即关联不存在的文件).构造函数有: public File(String pathname) ...

linux建立文件夹软连接

linux建立文件夹软连接,并强制覆盖 ln -sfn /home/var/log/httpd/logs logs 这将在当前目录下建立logs软连接,指向/home/var/log/httpd/lo ...

随机推荐

Sql Server 查询第30条数据到第40条记录数

1.select top  10 *  from  (select top  40 * from tablename order by id desc);

jsp的9大对象

1.requset对象 主要用于接受客户端通过HTTP协议传送给服务器端的数据     request.getProtocal()获得客户使用协议     request.getServletPath ...

入门6:PHP 语法基础——循环

一.for循环 for($i=0;$i<10;$i++){ echo "Hello".$i.""; } 二.while循环 $i = ...

Mysql存储引擎概念特点介绍及不同业务场景选用依据

目录 MySQL引擎概述 1 MySAM引擎介绍 2 什么是InnoDB引擎? 3 生产环境中如何批量更改MySQL引擎 4 有关MySQL引擎常见企业面试题 MySQL引擎概述 Mysql表存储结构 ...

简单实现 C&num; 与 Javascript的兼容

本文章介绍下自己这刚实现的一个c#与js交互的插件.需求来源于一次与朋友的讨论.主要对话如下: 朋友:最近我想模拟一些数据,来测试我现在写的接口,但手工编写这些测试数据太麻烦了 本人:是啊,.net能 ...

解决:启用多线程调用webBrowsers函数报错:指定的转换无效

这里就需要委托. 定义一个 委托.加载之后给他绑定一个方法Callback,也就是所说的回掉函数. 然后写一个线程,线程需要一个object 的参数.将你定义的委托当作参数传进线程中的方法. 在线程中 ...

iOS Build Apps for the World WWDC

Programming Resources https://developer.apple.com/internationalization/ WWDC Session Videos Internat ...

Spring Boot笔记二:快速创建以及yml文件自动注入

上个笔记写了如何自己去创建Spring boot,以及如何去打jar包,其实,还是有些麻烦的,我们还自己新建了几个文件夹不是. Idea可以让我们快速的去创建Spring boot应用,来看 一.快速 ...

idea便利配置使用配置

让properties能够中文正确显示 1.file encoding ---改为utf-8 spring的autowried没得错误,mybaties没得黄色背景 inspections--spri ...

HDUOJ--畅通工程

畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值