JCIFS读取远程服务器文件过慢的解决方法

发表于3年前(2013-07-12 11:23)   阅读(1174) | 评论(0

0人收藏此文章,

我要收藏

0

jcifs smb

与windows explorer打开相同的文件相比,JCIFS默认情况下要慢太多了。我找了大半天,总算找出了解决方法,增加如下配置,则读取速度会有质的飞跃,我这边从7s提升至0.2s:

?


1

System.setProperty("jcifs.smb.client.dfs.disabled", "true");

至于原因嘛,我也不知道,我是从此网站捞到的一条配置:

http://samba.2283325.n4.nabble.com/Peformance-questions-td4644647.html

执行程序代码如下:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

private static final int BUFFER_SIZE = 1024;

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

    //SmbFile file = new SmbFile("smb://finchina;daieel:[email protected]/Soft/sc8 key.txt");     //SmbFile file = new SmbFile("smb://10.15.97.181/xx部资料库/工作文档/查询逻辑.txt");d     //http://samba.2283325.n4.nabble.com/Peformance-questions-td4644647.html     System.setProperty("jcifs.smb.client.dfs.disabled", "true");

        

    long startTime = System.currentTimeMillis();

    UniAddress dc = UniAddress.getByName("192.168.100.5");  

    NtlmPasswordAuthentication authentication = new NtlmPasswordAuthentication("fgina", "xiajl", "orange");  

    SmbSession.logon(dc, authentication);  

    SmbFile file = new SmbFile("smb://192.168.100.5/edse/users.txt",  authentication);  

     

    ByteArrayOutputStream out = new ByteArrayOutputStream();

    BufferedInputStream in = new BufferedInputStream(new SmbFileInputStream(file));

    //SmbFileInputStream in = new SmbFileInputStream(file) ;  //建立smb文件输入流     byte buffer[] = new byte[BUFFER_SIZE] ;

    int count = -1

    while((count = in.read(buffer,0,BUFFER_SIZE)) != -1) {

        out.write(buffer, 0, count);

    }

    String content = new String(out.toByteArray(),"GBK");

    in.close();

    System.out.println(System.currentTimeMillis() - startTime);

     

    System.out.println(content);

}

时间: 2024-10-17 09:51:42

JCIFS读取远程服务器文件过慢的解决方法的相关文章

Java读取远程服务器文件到本地

=======================华丽的分隔线============================= 查看源代码可以看到openChannel()可选值如下: =====================华丽的分隔线============================= =======================华丽的分隔线============================ 其实,最简单到,最直接的还是用scp命令 因为,如果以上程序能够运行就一定可以通过ssh登录到

安装SFTP/FTP插件快速编辑远程服务器文件

默认的Sublime Text 3 是没有sftp/ftp功能的,如果编辑器自带ftp势必会提高开发效率,虽然Sublime Text 3 默认是没有ftp功能,但是安装sftp插件很容易.下面是我安装步骤,希望能帮助那些喜欢Sublime Text 3的朋友. 按下Ctrl+Shift+P调出命令面板 输入install 调出 Install Package 选项并回车,然后输入ftp,下拉列表中会出现一些相关的插件,选中sftp进行安装就行了, 出现下图说明安装成功了. 装好后还需配置如下:

【 D3.js 进阶系列 — 1.2 】 读取 CSV 文件时乱码的解决方法

在 D3 中使用 d3.csv 读取 CSV 文件时,有时会出现乱码问题.怎么解决呢? 1. 乱码问题 使用 d3.csv 读取 xxx.csv 文件时,如果 xxx.csv 文件使用的是 UTF-8 编码,不会有什么问题.当然,个人认为尽量使用 UTF-8 编码,可以在同一编码内使用各国文字. 但是,如果 xxx.csv 文件使用的是 utf-8 编码,使用 Microsoft Excel 打开的时候,可能会出现乱码,因为国内的 Excel 默认使用 GB2312 打开,而且在打开的时候不能选

上传文件,提示文件不存在的解决方法

在做公司的一个项目中,需要上传文件,使用的是AjaxUpload JS组件,选择完文件后,发送请求到指定接口,随即返回服务器上文件的相对路径,然后PHP再做其他工作(这不是重点) 处理上传的PHP程序,限制其文件大小为20M php.ini中 post_max_size 20M upload_max_filesize 20M memory_limit 256M ngint.conf中 client_max_body_size 518M 上传20M以下的文件,没有问题,但是,例如上传80M的文件,

《DDNS服务器的搭建和案例解决方法》

DDNS原理:DNS + DHCP =DDNS DHCP负责ip解析,和分配给客户机ip,ip为随机数. DNS负责域名解析,A记录里记录了每个ip对应的域名. 客户端ip肯定是变化的,不可能一直使用一个ip,所以当客户端的ip变时,使用DDNS服务,同时通知DNS的A记录,使他也同步更新,否则别人访问你的域名时找不到你的这台主机. 测试的环境:建立在DNS加密更新配置完好. DHCP默认安装好软件包是启动不了的. DHCP服务配置文件的有效行: "example.Com"这个域使用的

搭建VPN服务器或 出现733错误解决方法[验证]

搭建VPN服务器出现733错误解决方法[验证]   昨晚用Windows 2003单网卡用花生壳实现VPN,搭建好VPN服务器后(记得把防火墙和WINDOWS连接共享服务关掉哦,在WINDOWS 2003中服务名为:Windows Firewall/Internet Connection Sharing),注册好花生壳(这真是个好东本啊),尝试远程连接时出现错误信息:TCP/IP CP报告了错误733,不能完成到远程计算机的连接, 没有就ppp协议成功.怎么回事呢?百度了一下!原来VPN服务器不

(转) SQL Server中 ldf 文件过大的解决方法

原文地址:http://blog.itpub.net/35489/viewspace-616459/ 在SQL Server中经常遇到事务日志变大的情况,除了将数据库设置为“自动收缩”外,还可以使用下面的SQL命令进行快速清除数据库中的事务日志,命令如下:  - 第一步:清空日志  DUMP TRANSACTION   databasename   WITH   NO_LOG  -- 第二步:截断事务日志  BACKUP LOG   databasename   WITH   NO_LOG  -

mono 3.4.0 make install的时候出现"找不到 Microsoft.Portable.Common.targets 文件”的错误提示解决方法

如果在这时就进行配置安装Mono的话,会在make阶段得到一个“找不到 Microsoft.Portable.Common.targets 文件”的错误提示, 所以需要先进行如下处理: #> cd (mono安装路径的前缀)/mono-3.4.0/mcs/tools/xbuild/targets #> cp Microsoft.Portable.CSharp_4.0.targets Microsoft.Portable.Common.targets #> vim Microsoft.Po

转换到 COFF 期间失败: 文件无效或损坏 解决方法

转自csdn 终极解决方案:VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123” 错误,解决方案为将 项目|项目属性|配置属性|清单工具|输入和输出|嵌入清单 “是”改为“否”即可,但是没新建一个项目都要这样设置一次.在建立VS2010 Win32 Project项目时,按照上面解决方案依然发生了“error LNK1123”错误,经过上网查资料,解决方案为:第一步:与上相同.第二步:将 项目|项目属性|配置属性|连接器|清单文件|嵌入