当前位置: 首页 > news >正文

网站建设与管理需要什么软件安徽省建设部干部网站

网站建设与管理需要什么软件,安徽省建设部干部网站,无锡网站策划公司,电子商务有限公司名字大全背景#xff1a; 1、文件数据在A服务器#xff08;windows#xff09;#xff08;不定期在指定目录下生成#xff09;#xff0c;项目应用部署在B服务器#xff08;Linux#xff09;#xff1b; 2、项目应用在B服务器#xff0c;监听A服务器指定目录#xff0c;有新…背景 1、文件数据在A服务器windows不定期在指定目录下生成项目应用部署在B服务器Linux 2、项目应用在B服务器监听A服务器指定目录有新生成文件进行读取文件信息持久化数据 3、提供两块内容第一安装windows FTP服务第二项目源码希望可以帮助到你。 共计4种方案试错采用了第三种方案第四种方案没有试。 1、使用jcsh.jar提供方法读取文件信息但需要A服务器开通SSH远程连接一般linux服务器都是默认开通的可直接读取连接读取windows系统需安装SSH因现场环境A服务器是windows2003故放弃这种方法。 2、曲线救国通过脚本脚本监听比较困难故放弃把A服务器信息定时存入B服务器Linux再通过jcsh.jar读取文件信息。 3、通过A服务器安装FTP服务B服务器安装FTP客户端使用java动态监听该目录下生成文件读取信息。 4、把A服务器指定目录进行共享等同于共享的这个目录就是B服务的目录了再进行读取因第三种方案成功故没有尝试第四种方案。 windows安装FTP服务 1、开启ftp服务控制面板–程序和功能–启用或关闭windows功能–标红框全部打开–点击确定 2、新建站点 控制面板–大图标–管理工具 IIS管理器 网站–添加FTP站点 以上就是windows安装FTP服务的过程我这演示了匿名创建站点谁都可以访问还可以新建用户需要用户登录才能访问。 源码 引入该依赖 dependencygroupIdcommons-net/groupIdartifactIdcommons-net/artifactIdversion3.6/version /dependencyFileChangeData Data public class FileChangeData {/*** 文件信息* */private FTPFile ftpFile;/*** 文件改变类型* */private FileChangeType eventType;/*** 文件名称* */private String fileName;/*** 文件大小* */private Long fileSize;/*** FTPClient* */private FTPClient ftpClient;/*** 获取文件输入流* return InputStream* */public InputStream getInputStream(String filePathName) {//如果是删除事件则不能够获取流if (Objects.equals(eventType, FileChangeType.FILE_DELETED)) {return null;}try {return ftpClient.retrieveFileStream(filePathName);} catch (IOException e) {return null;}} }FileChangeEvent public interface FileChangeEvent {/*** 文件发生改变时触发此方法* param fileChangeData 文件发生了改变* */Functionvoid change(FileChangeData fileChangeData) throws IOException; }FTPService public interface FTPService {/*** ftp登陆* return boolean 是否登陆成功* */FTPClient login();/*** ftp登出* return boolean 是否登出成功* */boolean loginOut();/*** 获取文件列表* return FTPFile[] 文件列表* */FTPFile[] listFile();/*** 监听文件夹的改变* param fileChangeEvent 文件改变事件* */void addListenerFileChange(FileChangeEvent fileChangeEvent); }ListenerChangeRunnable public interface ListenerChangeRunnable extends Runnable {/*** 停止监听文件* return boolean 是否停止成功* */boolean stopListener(); }FTPServiceImpl Service public class FTPServiceImpl implements FTPService {Autowiredprivate FTPConfig ftpConfig;private String SPLIT :;private ThreadLocalFTPClient currentFTPClient;private ThreadLocalListenerChangeRunnable currentListener;public FTPServiceImpl() {this.currentFTPClient new ThreadLocal();this.currentListener new ThreadLocal();}Overridepublic FTPClient login() {FTPClient ftpClient new FTPClient();try {ftpClient.connect(ftpConfig.getFtpIp(), ftpConfig.getFtpPort());ftpClient.login(ftpConfig.getUsername(), ftpConfig.getPassword()); // ftpClient.setControlEncoding(gb2312);this.currentFTPClient.set(ftpClient);return ftpClient;} catch (Exception e) {return null;}}Overridepublic boolean loginOut() {try {currentFTPClient.get().logout();currentFTPClient.get().disconnect();return Boolean.TRUE;} catch (Exception e) {return Boolean.FALSE;}}Overridepublic FTPFile[] listFile() {FTPClient ftpClient this.currentFTPClient.get();try {return ftpClient.listFiles();} catch (Exception e) {return null;}}Overridepublic void addListenerFileChange(FileChangeEvent fileChangeEvent) {FTPClient ftpClient this.currentFTPClient.get();ListenerFileChangeThreadRunnable listenerFileChangeThread new ListenerFileChangeThreadRunnable(ftpClient, fileChangeEvent);this.currentListener.set(listenerFileChangeThread);new Thread(listenerFileChangeThread).start();} }ListenerFileChangeThreadRunnable Slf4j public class ListenerFileChangeThreadRunnable implements ListenerChangeRunnable {private final FTPClient ftpClient;private volatile boolean stop;private final MapString, Long fileMemory;private final FileChangeEvent fileChangeEvent;public ListenerFileChangeThreadRunnable(FTPClient ftpClient, FileChangeEvent fileChangeEvent) {this.ftpClient ftpClient;this.fileChangeEvent fileChangeEvent;this.fileMemory new HashMap();}Overridepublic void run() {while (!stop) {try {FTPFile[] ftpFiles ftpClient.listFiles();//判断文件被删除if (fileMemory.size() 0) {SetString fileNames new HashSet();for (FTPFile ftpFile : ftpFiles) {if (ftpFile.isDirectory()) {log.info(文件夹不做删除判断);continue;}fileNames.add(ftpFile.getName());}SetMap.EntryString, Long entries fileMemory.entrySet();for (Map.EntryString, Long map : entries) {if (!fileNames.contains(map.getKey())) {log.info(文件{}被删除了, map.getKey());FileChangeData fileChangeData new FileChangeData();fileChangeData.setEventType(FileChangeType.FILE_DELETED);fileChangeData.setFileName(map.getKey());fileChangeData.setFileSize(map.getValue());fileMemory.remove(map.getKey());entries.remove(map.getKey());fileChangeEvent.change(fileChangeData);}}}//判断文件是否有更改或新增for (FTPFile ftpFile: ftpFiles) {//判断是否为文件夹if (ftpFile.isDirectory()) { // log.info({}为文件不进行监听操作, ftpFile.getName());continue;}FileChangeData fileChangeData new FileChangeData();fileChangeData.setFileName(ftpFile.getName()); // fileChangeData.setFileName(D:\\ftptest\\aaa\\ftpFile.getName());fileChangeData.setFileSize(ftpFile.getSize());fileChangeData.setFtpFile(ftpFile);//文件是否存在于缓存文件列表中if (fileMemory.containsKey(ftpFile.getName())) { // log.info(文件{}在内存中已经存在进行大小判断, ftpFile.getName());if (!Objects.equals(fileMemory.get(ftpFile.getName()), ftpFile.getSize())) { // log.info(文件{}在内存中已经存在且大小不一致进行更新缓存操作, ftpFile.getName());fileMemory.put(ftpFile.getName(), ftpFile.getSize());fileChangeData.setEventType(FileChangeType.FILE_UPDATE);fileChangeEvent.change(fileChangeData);}continue;} // log.info(文件{}在内存中不存在进行缓存操作, ftpFile.getName());fileMemory.put(ftpFile.getName(), ftpFile.getSize());fileChangeData.setEventType(FileChangeType.FILE_ADD);fileChangeEvent.change(fileChangeData);}} catch (Exception e) {continue;//throw new RuntimeException(e);}try {TimeUnit.SECONDS.sleep(20);} catch (InterruptedException e) {continue;//throw new RuntimeException(e);}}}Overridepublic boolean stopListener() {this.stop Boolean.TRUE;this.fileMemory.clear();return this.stop;} }FileChangeType public enum FileChangeType {FILE_UPDATE(0, 文件更新),FILE_ADD(1, 文件添加),FILE_DELETED(2, 文件删除);Getterprivate Integer type;Getterprivate String desc;FileChangeType(Integer type, String desc) {this.type type;this.desc desc;} }FTPConfig Data Configuration public class FTPConfig {Value(${ftp.ip:ftp的ip})private String ftpIp;Value(${ftp.port:ftp端口默认21})private Integer ftpPort;Value(${ftp.username:ftp创建的用户名})private String username;Value(${ftp.password:ftp创建的用户名密码})private String password; }SendEmailApplicationTests Component class SendEmailApplicationTests implements ApplicationRunner {Autowiredprivate FTPService ftpService;void ftpTest() {FTPClient ftpClient ftpService.login();ftpService.addListenerFileChange(ftpFile - {System.out.println(String.format(文件%s被改变了文件改变类型%s, ftpFile.getFileName(), ftpFile.getEventType().getDesc()));InputStream inputStream ftpClient.retrieveFileStream(/ ftpFile.getFileName());if(inputStream!null){BufferedReader reader new BufferedReader(new InputStreamReader(inputStream,GBK));String s null;ListString listStr new ArrayList();//读取的数据在listStrwhile ((s reader.readLine()) ! null) {System.out.println( s);listStr.add(s);}//处理业务逻辑inputStream.close();reader.close();ftpClient.completePendingCommand();}});}Overridepublic void run(ApplicationArguments args) throws Exception {ftpTest();} }
http://www.pierceye.com/news/173434/

相关文章:

  • 网站开发保存学习进度的方案搭建网站免费
  • 做网站对外贸有什么用网站怎么防k
  • 网站开发网站建设常州建站程序
  • 赤峰建设局网站物流公司网站制作模板
  • 装修第三方平台网站建设网站开发及设计
  • 男女做那个的小视频网站个人如何注册公司流程
  • 机关网站建设前期准备工作wordpress替代
  • 机关网站建设无锡宜兴网站建设
  • 江苏景禾瑜博建设工程有限公司网站做网站注册公司
  • 如何找到做网站的客户贵州二建报名入口官网
  • 网站怎么做301定向wordpress极客式主题
  • 造价工程建设协会网站怎么把做的网站发布
  • 万网网站首页好企业网站
  • 廊坊做网站电话企业网络搭建拓扑图
  • 建设社区网站有什么借鉴之处专业网站制作哪家专业
  • 南宁网站推广流程wordpress 雅黑字体
  • 个人网站制作代码河北seo基础知识
  • 国内做视频的网站有哪些企业网站价格花
  • 泰安网站推广优化wordpress首页图片
  • 政协网站建设更改wordpress管理员用户名
  • 网站浏览器兼容性通用有那种网站么
  • 网站中全景是怎么做的云南网络营销文化优化
  • 苏州网站优化哪家好换空间对网站的影响
  • 如何做黑客攻击网站专业的网站建设运营
  • 门户网站建站流程做网站在哪里做比较好
  • 青创网站首页wordpress用户发文章
  • wordpress 仿站 主题网站建设拍金手指排名贰拾
  • 自己的网站怎么做跳转广州白云建方舱医院
  • 免费搭建购物网站网页游戏网站打不开
  • 专业的东莞网站设计wordpress extra script