Camel FTP中文目录解决办法

手摸手系列之---camel ftp监听接收解析xml报文并入库生成Java对象实战 前言 版本: SpringBoot 2.4 camel 3.5.0 最近在做跟一个第三方系统的对接,主要流程就是对方生成XML格式的报文,需要我方将其报文发送到海关申报,然后将申报完的数据再组装成XML报文格式发回到对方的FTP服务器。功能其实挺简单,用Apache的camel-ftp很容易就能实现,下面看看具体如何做吧。 一、引入camel依赖: <!-- camel-spring-boot-starter --> <dependency> <groupId>or 阅读详情

Camel FTP中文目录解决办法

         在Camel中使用FTP只需要简单的DSL配置就可以了,把对应的jar放到classpath即可,但是在使用中遇到了FTP服务器上中文目录的问题,如果FTP服务器上的目录是中文的,那么FTP执行什么信息都没有,也没有错误,也没有下载下来。搞得我有些莫名其妙,不知道到底是怎么回事。

 

         后来开始跟踪Camel源代码进行debug,终于发现在org.apache.camel.component.file.remote.FtpOperations类的doChangeDirectory方法中,无法进入到对应的中文目录。

复制代码

 1   private void doChangeDirectory(String path) {
 2         if (path == null || ".".equals(path) || ObjectHelper.isEmpty(path)) {
 3             return;
 4         }
 5 
 6         log.trace("Changing directory: {}", path);
 7         boolean success;
 8         try {
 9             if ("..".equals(path)) {
10                 changeToParentDirectory();
11                 success = true;
12             } else {
13                 success = client.changeWorkingDirectory(path);
14             }
15         } catch (IOException e) {
16             throw new GenericFileOperationFailedException(client.getReplyCode(), client.getReplyString(), e.getMessage(), e);
17         }
18         if (!success) {
19             throw new GenericFileOperationFailedException(client.getReplyCode(), client.getReplyString(), "Cannot change directory to: " + path);
20         }
21     }

复制代码

     关键就在第13行client.changeWorkingDirectory的方法,而这个client是用的org.apache.commons.net.ftp.FTPClient,上网查找了一下,发现很多人都遇到了FTPClient不能进入中文目录的问题。

     尝试了三种方法:

      第一种改变编码,不行,还是不能进入目录。

     

 uri = new String(uri.getBytes("gb2312"),"iso-8859-1");

   

     第二种方法,设置表头的编码,还是不行。

  

复制代码

.process(new Processor() {
                            
                            @Override
                            public void process(Exchange exchange) throws Exception {
                                exchange.setProperty(Exchange.CHARSET_NAME, "gb2312");
                            }
                        })

复制代码

 

   第三种方法,设置FTPClient的编码,这个终于OK了,关键就在最后的红字,ftpClient.controlEncoding=gb2312

   

String uri = "ftp://username@10.10.XX4.122/中文目录?password=xxxx&ftpClient.controlEncoding=gb2312";
中文乱码解决方法 帮助你解决oracle插入数据,数据时乱码的问题,很简单,很方便 立即下载

相关推荐

手把手调试:如何为高通Hypervisor上的GuestOS添加一个自定义的HAB服务通道

本文详细介绍了如何在高通Hypervisor环境下为GuestOS添加自定义HAB服务通道的全过程。从HAB通信框架的核心概念解析到设备树节点的动态注入机制,再到物理通道的内核层实现和用户层测试,提供了完整的开发案例和调试技巧,帮助开发者高效构建定制化通信服务。

weixin_27066963的博客 371

上传文件,文件名乱码解决

public static String getUTFStringByEncoding(String str) { String encode = "UTF-8"; String returnStr = ""; try { if(str!=null){ if (str.equals(new String(str.getBytes("GB2312"), "GB2312"))) { encode = "GB2312"; }else if (str.equal...

江黎 1933

告别手动改图!用Python+PyWin32驱动SolidWorks,实现参数自动化修改(保姆级避坑指南)

本文详细介绍了如何利用Python和PyWin32驱动SolidWorks实现参数自动化修改,提供从环境配置到API连接的工业级解决方案。通过实战案例和避坑指南,帮助工程师高效搭建自动化脚本工作流,显著提升设计效率。

weixin_30614109的博客 743

Apache Camel SFTP 参数说明及介绍

不支持绝对路径。骆驼通过修剪所有的前斜线将绝对路径转换为相对路径directoryname。日志中将显示警告消息。 Maven用户将需要为其组件添加以下依赖项pom.xml: <span style="color:#333333"><span style="color:#585ac2"><code class="language-xml">...

qiandeqiande的专栏 3570

[Ethernet in CANoe]3--CANoe工程中SOME/IP报文的详细介绍(一)

和上述第一章节的介绍,我们对SOEMIP通信协议有了初步了解,首先我们先暂停Trace窗口,可以看到整个Trace窗口关于SOMEIP的报文有两种颜色,一种是紫色,另一种是绿色。它使用多播地址,允许服务提供者发布其服务,服务消费者订阅这些服务。上述每点开一个SOMEIP报文,左侧的details就能看到该报文中的具体细节,从IP地址到port口,再到具体的serviceID,都能详细的解析。一旦通过服务发现完成了服务的发布和订阅,服务消费者就可以向服务提供者发送请求,或者服务提供者向消费者发送事件通知。

汽车ECU自动化测试 1411

保姆级教程:用NFS把群晖NAS的文件夹挂到Ubuntu 22.04上,实现文件无缝共享

本文提供了一份详细的教程,指导用户如何通过NFS协议将群晖NAS的文件夹挂载到Ubuntu 22.04系统上,实现文件的无缝共享。文章对比了NFS与SMB协议的性能差异,并提供了群晖端和Ubuntu端的配置指南、高级参数优化、自动挂载方案以及生产环境中的实战技巧,帮助用户提升文件共享效率和系统稳定性。

weixin_29213827的博客 405

SpringBoot 集成 Apache Camel FTP 实现文件同步

1. 依赖 <dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-spring-boot-starter</artifactId> <version>3.4.2</version> </dependency> <dependency> <groupId>or

我这孩子从小记性就不好,什么东西都要写下来才放心 2718

海康威视GigE工业相机的python调用demo

默认路径安装完成后,在路径C:\Program Files (x86)\MVS\Development\Samples\Python\BasicDemo下的BasicDemo.py中,海康威视官方提供了基本的调用方法,本文也是基于这个修改的。BasicDemo.py提供了通过枚举选择相机的方法,在官方的另一个DEMO:ConnectSpecCamera.py中提供了另一种不通过枚举,直接访问特定IP相机的方法,也可以参考。另外,如果每台相机都定义了唯一的用户定义名,也可以通过用户定义名来区分相机。

xulibo5828的博客 2109

Apache Camel之FTP组件:简单地从Ftp服务器下载文件到本地文件夹

前期准备:在自己的电脑上搭建FTP服务器 非Spring实现maven依赖: 在一个项目里有关于camel的版本要保持一致!!! <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-core</artifactId> </dependency> <dependency>

Konw Nothing 3546

SIWAVE仿真PCB操作说明

使用SIWAVE进行PCB仿真提取S参数的操作

sinat_15150363的博客 3067

matlab 一维相位解缠

一维相位解缠算法的matlab代码实现。

点云侠的博客 372

手摸手系列之---camel ftp监听本地报文目录,并在报文生成后上传到远程第三方ftp服务器实战

前言 版本: SpringBoot 2.4 camel 3.5.0 上篇文章已经说过项目需求和主要流程,现在已经接收解析xml报文并入库生成Java对象。下一步就是处理完生成的数据生成XML报文,再返回给第三方ftp服务器了。下面看看怎么做。 1. 增加camel配置,本地监听目录和远程第三方ftp服务器URL。 # camel配置 camel: # camel ftp服务路由地址 route: id: XMLRoute ftp: server: sftp://119

The man was lazy and left no message 911

学Simulink——基于电能质量治理的场景实例:静止无功发生器(SVG)与并网逆变器的结合

本文详细介绍了基于Simulink的SVG与光伏并网逆变器联合仿真建模方法。系统包含光伏单元、SVG主电路、控制策略(无功检测+双闭环控制)等模块,通过ip-iq法实现动态无功补偿。仿真结果表明,SVG能快速响应负载变化,将功率因数提升至0.98以上,有效稳定母线电压。该方案为新能源并网系统提供了有功/无功协同控制解决方案,具有10ms级响应速度和±5kvar补偿能力。文章提供了完整的建模流程、控制算法实现和结果分析,可作为电力电子与电能质量治理领域的实践指导。

amy_mhd的博客 167

camel 入门

前段时间和一些朋友聊过Apache Camel , 他们都反映一个问题就是有关Camel构架的介绍文档很少。其实在Camel发行包中所带的文档Camel Manual 就有一段对Camel内部设计有一个比较好的介绍。我在这里把其中大部分的内容 翻译成了中文,希望能对大家了解Camel有所帮助。EndpointEndpoint这个词以前经常被用来描述进程间通信。例如,在客户端与服务器之间的通讯,客户...

atomti 198

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

针对Java开发者的Apache Camel入门指南

前言 Apache Camel是一个非常实用的规则引擎库,能够用来处理来自于不同源的事件和信息。你可以在使用不同的协议比如VM,HTTP,FTP,JMS甚至是文件系统中来传递消息,并且让你的操作逻辑和传递逻辑保持分离,这能够让你更专注于消息的内容。 在这篇文章中,我将提供一个Java语言(非Groovy)的Apache Camel入门演示。 首先创建一个Maven项目的pom.xml。 <xmlversion="1.0"encoding="UTF-8"> <pr...

javajavajava 1177

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Apache Camel 入门(一)

解析文件内容如果person.city的值是 London,则输出日志UK message并将文件移动到目录 messages/uk目录下.否则输出日志Other message并将文件复制到。-DarchetypeArtifactId:这是要使用的原型的 ID(即,使用 Camel Core 中的哪个模板 - 在本例中)camel-archetype-java。-DgroupId:您正在创建的项目的组 ID。-DartifactId:您正在创建的项目的工件名称。-Dversion:项目的版本。

Made In SQL 2331

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Camel中的几个重要概念之 Endpoint

前段时间和一些朋友聊过Apache Camel , 他们都反映一个问题就是有关Camel构架的介绍文档很少。其实在Camel发行包中所带的文档Camel Manual 就有一段对Camel内部设计有一个比较好的介绍。我在这里把其中大部分的内容 翻译成了中文,希望能对大家了解Camel有所帮助。 Endpoint Endpoint这个词以前经常被用来描述进程间通信。例如,在客户端与服务器之间的通...

Willem's Blog 1127

Camel 入门

前段时间和一些朋友聊过Apache Camel , 他们都反映一个问题就是有关Camel构架的介绍文档很少。其实在Camel发行包中所带的文档Camel Manual 就有一段对Camel内部设计有一个比较好的介绍。我在这里把其中大部分的内容 翻译成了中文,希望能对大家了解Camel有所帮助。 Endpoint Endpoint这个词以前经常被用来描述进程间通信。例如,在客户端与服务器...

Ferrerooo 成长 175

camel 入门(1)

前段时间和一些朋友聊过Apache Camel , 他们都反映一个问题就是有关Camel构架的介绍文档很少。其实在Camel发行包中所带的文档Camel Manual 就有一段对Camel内部设计有一个比较好的介绍。我在这里把其中大部分的内容 翻译成了中文,希望能对大家了解Camel有所帮助。 Endpoint Endpoint这个词以前经常被用来描述进程间通信。例如,在客户端与服务器之间的通...

flyhighwl的博客 710

Apache Camel简介以及使用场景

Apache Camel简介以及使用场景我们要解决的问题以及解决方案我们要解决的问题EAI的常用解决方案SOA架构模型ESB企业服务总线如何实现ESB为什么使用CamelCamel可以做什么Apache Camel简介Camel的应用场景Camel的核心要素EndpointExchangeProcessorRoutingServiceCamelContext上下文 我们要解决的问题以及解决方案 我...

GuoDa_的博客 1万+

用apache FTP client实现FTP客户端--支持断点续传和中文文件(转)

利用org.apache.commons.net.ftp包实现一个简单的ftp客户端实用类。主要实现一下功能 1.支持上传下载。支持断点续传 2.支持进度汇报 3.支持对于中文目录及中文文件创建的支持。 具体请看代码,上面有详细的注释。简化版本请参见http://zhouzaibao.iteye.com/blog/342766   枚举类UploadStatus代码 public e...

iushnauh的专栏 192

java ftp 乱码_Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题

//文件上传public static boolean uploadToFTP(String url,int port,String username,String password,String path,String filename,InputStream input){boolean success=false;FTPClient ftp=new FTPClient();//org.apa...

weixin_31132687的博客 271

apache Camel 文档

Apache Camel USER GUIDE Version 2.15.2 Copyright 2007-2015, Apache Software Foundation Table of Contents Table of ContentsIntroductionQuickstartGetting StartedArchitectureEnte

like的专栏 1915

ApacheCamel中文开发使用指南资源下载:全面的集成开发利器

ApacheCamel中文开发使用指南资源下载:全面的集成开发利器 去发现同类优质开源项目:https://gitcode.com/ ApacheCamel中文开发使用指南资源下载是一个专为开发者提供的详尽指南,帮助您深入理解和掌握ApacheCamel的使用方法。本文将为您详细介绍这一项目的核心功能、技术分析、应用场景以及项目特点,让您轻松驾驭ApacheCamel,构建灵活、可扩展的集成解决方...

gitblog_06758的博客 354
上一篇: Camel in action(第一章译文)
下一篇: Spring in Action --- 第四章 面向切面的Spring
TuxedoLinux
博客等级 码龄9年 268粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值