服务应用的端口和商事,linux共享文件samba安装与java读取外部文件夹方法

主题素材讲述:使用jcifs
jar包操作共享文件,将当麻芋果件上传至服务器共享区遇见Exception:jcifs.smb.SmbException:
The network name cannot be found.
可是同样的代码将文件上传至虚拟机共享区就足以。
本机操作系统:win十,服务器:winserver 二零一一,虚拟机:winserver 二零一零

转载自笨笨熊的BLOG:

Samba服务所使用的端口和商谈: 

linux共享文件samba安装与java读取外部文件夹方法,linuxsamba

代码如下:
      
        InputStream in = null;
        OutputStream out = null;
        //当和姑件地点
        File localFile = new
File(“F:”+File.separator+”test”+File.separator+”cc.jpg”);
        String fileName = localFile.getName();
        //存放文件的共享文件夹目录
        String remotePhotoUrl = “smb://192.168.56.142/Windchill/test”;
        NtlmPasswordAuthentication auth = new
NtlmPasswordAuthentication(“”, “winserver”, “!qaz2wsx”);
        SmbFile remoteFile = new
SmbFile(remotePhotoUrl+File.separator+fileName,auth);
        //创建连接
        remoteFile.connect();
        
        in = new BufferedInputStream(new FileInputStream(localFile));
        out = new BufferedOutputStream(new
SmbFileOutputStream(remoteFile));
        
        byte[] buffer = new byte[2048];
        int len = 0;
        while((len = in.read(buffer, 0, buffer.length))!=-1) {
            out.write(buffer, 0, len);
        }
        out.flush();
        out.close();
        in.close();
   
    难题原因:win拾 与winserver 二〇一二 文件分隔符有分别

 

1)Port 137 (UDP) - NetBIOS 名字服务 ; nmbd

2)Port 138 (UDP) - NetBIOS 数据报服务
3)Port 139 (TCP) - 文件和打印共享 ; smbd (基于SMB(Server Message Block)协议,主要在局域网中使用,文件共享协议)
4)Port 389 (TCP) - 用于 LDAP (Active Directory Mode)
5)Port 445 (TCP) - NetBIOS服务在windos 2000及以后版本使用此端口, (Common Internet File System,CIFS,它是SMB协议扩展到Internet后,实现Internet文件共享)

6)Port 901 (TCP) - 用于 SWAT,用于网页管理Samba  

windows系统之间的文件共享协议:NetBEUI(NetBIOS Extend User Interface)协议和IPX/SPX协议

NetBEUI协议是一种短小精悍、通信效率高的广播型协议,安装后不需要进行设置,特别适合于在“网络邻居”传送数据。

NETBEUI缺乏路由和网络层寻址功能,既是其最大的优点,也是其最大的缺点。因为它不需要附加的网络地址和网络层头尾,所以很快并很有效且适用于只有单个网络或整个环境都桥接起来的小工作组环境。

因为不支持路由,所以NETBEUI永远不会成为企业网络的主要协议。NETBEUI帧中唯一的地址是数据链路层媒体访问控制(MAC)地址,该地址标识了网卡但没有标识网络。路由器靠网络地址将帧转发到最终目的地,而NETBEUI帧完全缺乏该信息。

NetBEUI协议主要用于本地局域网中,一般不能用于与其他网络的计算机进行沟通。 

IPX/SPX (Internetwork Packet Exchange/Sequences Packet Exchange,Internet分组交换/顺序分组交换IPX/SPX)是Novell公司的通信协议集。与NetBEUI形成鲜明区别的是IPX/SPX比较庞大,在复杂环境下具有很强的适应性。这是因为IPX/SPX在设计一开始就考虑了网段的问题,因此它具有强大的路由功能,适合于大型网络使用。

IPX主要实现网络设备之间连接的建立维持和终止;SPX协议是IPX的辅助协议,主要实现发出信息的分组、跟踪分组传输,保证信息完整无缺的传输。 其中,IPX协议负责数据包的传送;SPX负责数据包传输的完整性。

LINUX系统之间文件共享 和 LIUNX与WINDOWS系统之间的文件共享:IBM SMB,服务器信息块协议

服务器信息块(SMB)协议是一种IBM协议,用于在计算机间共享文件、打印机、串口等。SMB协议可以用在因特网的TCP/IP协议之上,也可以用在其它网络协议如IPX和NetBEUI之上。


http://blog.csdn.net/wangsifu2009/article/details/6780749

------------------------------------------------------------------------------

测试情况RedHat 6.四

一.安装

    samba组件设置:

(一)首先用“rpm –qa |grep samba”命令核准系统samba服务是还是不是安装。

#rpm –qa |grep samba

samba-common-3.6.9-151.el6.x86_64.rpm

samba-winbind-3.6.9-151.el6.x86_64.rpm

samba-winbind-clients-3.6.9-151.el6.x86_64.rpm

samba-3.6.9-151.el6.x86_64.rpm

(2)假设未有出示samba(版本)新闻,则申明未有安装,利用“RedHat
Linux安装光盘”里自带的RPM包实行安装(也可和睦在网络下载相关的本子包进行设置)。(能够因此压缩工具打开RedHat的镜像iso文件,在rpm包目录下能够找到有关samba的包)

rpm -ivh samba-common-3.6.9-151.el6.x86_64.rpm -f –nodeps

rpm -ivh samba-winbind-3.6.9-151.el6.x86_64.rpm -f –nodeps

rpm -ivh samba-winbind-clients-3.6.9-151.el6.x86_64.rpm -f –nodeps

rpm -ivh samba-3.6.9-151.el6.x86_64.rpm -f –nodeps

rpm -ivh samba4-libs-4.0.0-55.el6.rc4.x86_64.rpm –f –nodeps

rpm -ivh samba-client-3.6.9-151.el6.x86_64.rpm –f -nodeps

卸载命令:# rpm -e [包名]

依然强制卸载: # rpm -e –nodeps [包名]

贰.Samba的smb.conf文件配置

cd /etc/samba

mv smb.conf smb_bak.conf(备份源文件)

touch smb.conf

将下文复制进smb.conf中:

[gobal]

  workgroup = LinuxSir

  netbios name = RedHat

  server string = Linux Samba Server

  security = user

  hosts allow = 192.168.1. 192.168.2. 127.

[public]

  path = /XXXX/shareimg

  writeable = yes

  valid users = root

  browseable = yes

  guest ok = no

(public为访问时的路线名,path为系统实际路线)

文件配置介绍:

全局选项用于[global]的<section>选项定义中,其用于注解samba服务器的1对主干性能。其有些选项能够被其它<section>中的选项定义覆盖。

workgroup = MYGROUP

定义samba服务器所在的工作组可能域(要是设置security = domain的话)。

server string = Samba server

设定samba服务器的描述,通过网络邻居访问时可在备注中查看到该描述消息。

hosts allow = host (subnet)

设定允许访问该samba服务器的主机IP或互联网,该选拔的值为列表类型,分歧的种类里面利用空格或逗号隔离,举例hosts
allow = 19二.168.三.0,
1玖二.16捌.一.1,该选用设置允许主机1九2.16捌.壹.壹以及子网192.16八.3.0/二4内的有所主机访问该samba服务器。

hosts deny = host (subnet)

设定不允许访问该samba服务器的主机IP或网络,其格式与hosts allow一样。

guest account = guest

设定了游人的账号,在游客访问guest ok =
yes的共享服务时,samba服务器将安装客户端以该旅客账号来访问共享。

log file = MYLOGFILE

设定记录文件的地点。

max log size = size

设定记录文件的分寸,单位为KB,纵然设置为0则意味着无大小限制。

security =

设定samba服务器的安全级,其有三种安全品级:share、user、server和domain,默以为user。关于那各个安全级其他详细信息,请查占卜关文书档案。

password server = ServerIP

设定了用户账号认证服务器IP,其在设定security = server时有效。

encrypt passwords = yes | no

设定是不是对密码实行加密。借使不对密码进行加密的话,在印证会话时期,客户端与服务器传递的是当着密码。但有一些Windows系统暗许情形下,不援救明文密码传输。

passdb backend = smbpasswd | tdbsam | ldapsam

设定samba服务器访问和储存samba用户账号的后端,在samba-3.0。二三在此以前的默许值为smbpasswd,而随后的暗中同意值为tdbsam。

smb passwd file =

设定samba的用户账号文件。对于源代码安装的samba,在samba-三.0.二叁以前,其私下认可值为/user/local/samba
/private/smbpasswd;而samba-三.0.2三之后,其暗中同意值为/usr/local/samba/private
/passwd.tdb。

include = smbconfFile

因此include选项能够分包别的布署文件,通过该选拔和部分samba定义的变量能够设定与不相同机器相关的配备。

local master = yes | no

设定该samba服务器是或不是准备成为地面主浏览器,暗中同意值为yes。若设置为no,则该samba服务器永恒不容许变开销土主浏览器,而设置为yes不表示其一定能造成地方主浏览器,只是让其能到场当地主浏览器的选出。

os level = N

N是二个平头,设定了该samba服务器加入地点主浏览器大选时的权重,其值越大,权重越大。os
level = 0时,该服务器将错过大选的机遇。

domain master = yes | no

设定samba服务器成为域浏览器。域浏览器从种种地点主浏览器处获得浏览列表,并将整个域的浏览列表传递给各种地方主浏览器。

preferred master = yes | no

设定该samba服务器是或不是为工作组里的首要主浏览器,假使设置为yes,则在nmbd运维时,将强制二个浏览挑选。

一些选项:

有的选项为除去global外的顺序<section>中的参数。其定义了共享服务的性质。

comment =

设定共享服务的叙说音讯。

path =

设定共享服务的路子,当中能够组合samba预订义的变量来设置。

hosts allow = host(subnet)

hosts deny = host(subnet)

与大局的hosts allow和hosts deny含义同样,其会覆盖全局的装置。

read only = yes | no

设定该共享服务是还是不是为只读,该采纳有1个同等选项writeable。

user = user(@group)

设定全体十分大只怕采取该共享服务的用户,能够使用@group来设置群组group中的全体用户账号。该选取的值为列表,差别的档期的顺序里面利用空格或逗号
隔绝。在安装security =
share时,客户端要访问某共享服务时提供的密码会与该选项钦点的有所用户实行依次配对注脚,若某用户认证通过,则以该用户权限进行共享服务走访,否则拒绝客户端的造访(设置security = share不是同意游客访问,只有guest ok =
yes才是允许游客访问,切记!!!)。

valid users = user(@group)

设定能够利用该共享服务的用户和组,其值的格式与user选项同样。

invalid users = user(@group)

设定不可以利用该共享服务的用户和组,其值的格式与user选项一样。

read list = user(@group)

设定对该共享服务只有读取权限的用户和组,其值的格式与user选项同样。

write list = user(@group)

设定对该共享服务具备读写权限的用户和组,其值的格式与user选项一样。

admin list = user(@group)

设定对该共享服务具备管理权限的用户和组,其值的格式与user选项同样。

public = yes | no

设定该共享服务是还是不是能够被游客访问,其同义选项有guest ok。

create mode = mode

mode为8进制值,如075五,其暗许值为074四。该选项钦命的值用于过滤新建文件的拜访权限,新建文件的暗中同意权限将与create
mode钦点的值进行按位与操作,将结果再与force create
mode钦命的值实行按位或操作,获得的结果即为新建文件的走访权限。

force create mode = mode

mode为八进制值,默以为0000。其意义仿效选项create mode。

directory mode = mode

mode为八进制值,默感到075伍。该选项钦赐的值用于过滤新建目录的走访权限,新建目录的暗中同意权限将与directory
mode钦命的值进行按位与操作,将结果再与force directory
mode内定的值进行按位或操作,获得的结果即为新建目录的造访权限。

force directory mode = mode

mode为捌进制值,默以为0000。该选拔的意义参照他事他说加以考察选项directory mode。

force user = user

强制设定新建文件的属性onwer。若存在3个目录,其允许guest能够写,则guest就足以去除。但设定force
user为别的用户,并安装create mode =
075五,则gues用户不可见删除其新建文件。

三.新建共享目录

#mkdir /XXXX/shareimg

#chmod 777 /XXXX/shareimg //让全数用户具备完全权限(暗许用户为root)

肆.将root用户进入smb的用户列表中

#smbpasswd –a root  //将root用户增加为samba用户,需安装访问密码

还是能新建贰个用户

#useradd cc   //添加cc用户

#passwd cc   //设置cc用户的口令

假设用新用户,需修改共享文件夹全部者

chown -R cc.cc /XXXX/shareimg

而且修改smb.conf中的valid users = cc

#smbpasswd –a cc  //将cc用户增加为samba用户,需安装访问密码

伍.开发银行服务

安装开机自运转:

chkconfig –level 2345 smb on

chkconfig –level 2345 nmb on 

service smb start

service nmb start

在上面难点修复后请重启服务:

service smb restart

service nmb restart

另:需在开机启动脚本/etc/rc.d/init.d/smb下添加一句话来堤防运行服务时不能访问文件夹

……………

服务应用的端口和商事,linux共享文件samba安装与java读取外部文件夹方法。start() {

    KIND=”SMB”

    echo -n $”Starting $KIND services: “

    setenforce 0  (加上此句)

    daemon smbd $SMBDOPTIONS

    RETVAL=$?

    echo

    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/smb || \

       RETVAL=1

    return $RETVAL

}  

…………

开机自运行存在问题!!!

六.连接

Windows下:\\ip地址\public

七.问题

(1)能够登入samba服务器,不过从未权力访问linux下的共享目录

1、确定保障linux下防火墙关闭大概是开放共享目录权限  iptalbes -F
2、确认保证samba服务器配置文件smb.conf设置未有毛病,可互连网查看资料看安排形式
3、确认保障setlinux关闭,可以用setenforce 0命令实施。
暗许的,SELinux禁止互联网上对Samba服务器上的共享目录举办写操作,纵然你在smb.conf中允许了那项操作。

那多少个指令必须实行:

   iptables -F

   setenforce 0

(2)windows 删除共享缓存

C:\Documents and Settings\Administrator>net use
会记录新的互联网连接。

状态       本地        远程                      网络


OK           Z:        \\192.168.31.85\chrishome Microsoft Windows
Network
OK                     \\192.168.31.88\dev-home  Microsoft Windows
Network
一声令下成功做到。

C:\Documents and Settings\Administrator>net use
\\192.168.31.88\dev-home /delete

\\192.168.31.88\dev-home 已经去除。

捌.基于SMB/JCIFS协议的共享文件上传和下载(用于测试)

澳门葡京备用网址 1 1
package com.smb; 2 3 import java.io.BufferedInputStream; 4 import
java.io.BufferedOutputStream; 5 import java.io.File; 6 import
java.io.FileInputStream; 7 import java.io.FileOutputStream; 8 import
java.io.IOException; 9 import java.io.InputStream; 10 import
java.io.OutputStream; 11 12 import jcifs.smb.SmbFile; 13 import
jcifs.smb.SmbFileInputStream; 14 import jcifs.smb.SmbFileOutputStream;
15 16 public class Smbtest { 17 /** 18 *
从局域网中共享文件中收获文件并保留在地面磁盘上 1玖 * @param remoteUrl
共享Computer路径如:smb//administrator:[email protected]/smb/12二一.zip
, smb为共享文件 20 *
注:倘诺直白出现接二连三不上,有提醒报错,并且错误消息是 用户名活密码错误
则修改共享机器的文书夹选项 查看 去掉共享轻巧文件夹的对勾就可以。 二一 *
@param localDir 当地路线 如:D:/ 2贰 */ 23 public static void
smbGet(String remoteUrl,String localDir){ 24 InputStream in = null; 25
OutputStream out = null; 26 try { 27 SmbFile smbFile = new
SmbFile(remoteUrl); 28 String fileName = smbFile.getName(); 29 File
localFile = new File(localDir+File.separator+fileName); 30 in = new
BufferedInputStream(new SmbFileInputStream(smbFile)); 31 out = new
BufferedOutputStream(new FileOutputStream(localFile)); 32 byte
[]buffer = new byte[1024]; 33 while((in.read(buffer)) != -1){ 34
out.write(buffer); 35 buffer = new byte[1024]; 36 } 37 } catch
(Exception e) { 38 e.printStackTrace(); 39 }finally{ 40 try { 41
out.close(); 42 in.close(); 43 } catch (IOException e) { 44
e.printStackTrace(); 45 } 46 } 47 } 48 /** 49 *
把本地球磁性盘中的文件上传到局域网共享文件下 50 * @param remoteUrl
共享计算机路径如:smb//administrator:[email protected]/smb
51 * @param localFilePath 本地路线 如:D:/ 5二 */ 53 public static void
smbPut(String remoteUrl,String localFilePath){ 54 InputStream in = null;
55 OutputStream out = null; 56 try { 57 File localFile = new
File(localFilePath); 58 String fileName = localFile.getName(); 59
SmbFile remoteFile = new SmbFile(remoteUrl+”/”+fileName); 60 in = new
BufferedInputStream(new FileInputStream(localFile)); 61 out = new
BufferedOutputStream(new SmbFileOutputStream(remoteFile)); 62 byte[]
buffer = new byte[1024]; 63 while((in.read(buffer)) != -1){ 64
out.write(buffer); 65 buffer = new byte[1024]; 66 } 67 } catch
(Exception e) { 68 e.printStackTrace(); 69 }finally{ 70 try { 71
out.close(); 72 in.close(); 73 } catch (IOException e) { 74
e.printStackTrace(); 75 } 76 } 77 } 78 79 public static void
main(String[] args) { 80
smbPut(“smb://root:[email protected]/public”,
“E:/img/11.tmp”); 81
smbGet(“smb://root:[email protected]/public/1.jpg
“, “E:/”); 82 83 } 84 85 } View
Code

玖.Web服务器访问外部文件夹

Jsp:

澳门葡京备用网址 21<h一>请求图片</h一> 二 三 <form name=”userForm三”
action=””
enctype=”multipart/form-data” method=”post”> 4 5 <input
type=”text” name=”pic” /><br/> 6 7 <input type=”submit”
value=”上传”> 8 9 </form> View Code

Servlet:

    Action中:(springMVC+spring+mybatis)

澳门葡京备用网址 3 一@RequestMapping(value=”/showPic”,method = RequestMethod.POST) 2 三@ResponseBody 4 伍 public void showPicture(HttpServletRequest
request,HttpServletResponse response){ 6 柒 String url =
request.getParameter(“pic”); 八 玖 System.out.println(url+”————“);
10 11 response.setContentType(“image/jpg”); //设置再次回到的文件类型 1贰 13try { 1四 壹5 OutputStream toClient=response.getOutputStream(); 16 17SmbFiles.smbGet(url, “E:/”,toClient); 18 1九 } catch (IOException e) { 20
二一 // TODO Auto-generated catch block 22 二三 e.printStackTrace(); 贰4 25 }
贰陆 27 } View Code

修改Smbtest类:

澳门葡京备用网址 4 1 /**
2 3 * 从局域网中国共产党享文件中得到文件并保存在该地球磁性盘上 4 5 * @param
remoteUrl 共享Computer路径如:smb//administrator:[email protected]/smb/12二一.zip
, smb为共享文件 陆 柒 *
注:若是直白出现接二连三不上,有提醒报错,并且错误音信是 用户名活密码错误
则修改共享机器的公文夹选项 查看 去掉共享轻巧文件夹的对勾就能够。 捌 九 *
@param localDir 本地路线 如:D:/ 10 1壹 */ 12 13 public static void
smbGet(String remoteUrl,String localDir,OutputStream toClient){ 14 15
InputStream in = null; 16 17 OutputStream out = null; 18 19 try { 20 21
SmbFile smbFile = new SmbFile(remoteUrl); 22 23 String fileName =
smbFile.getName(); 24 25 File localFile = new
File(localDir+File.separator+fileName); 26 27 in = new
BufferedInputStream(new SmbFileInputStream(smbFile)); 28 29 out = new
BufferedOutputStream(new FileOutputStream(localFile)); 30 31 byte
[]buffer = new byte[1024]; 32 33 while((in.read(buffer)) != -1){ 34
35 out.write(buffer); 36 37 toClient.write(buffer); 38 39 buffer = new
byte[1024]; 40 41 } 42 43 } catch (Exception e) { 44 45
e.printStackTrace(); 46 47 }finally{ 48 49 try { 50 51 out.close(); 52
53 in.close(); 54 55 toClient.close(); 56 57 } catch (IOException e) {
58 59 e.printStackTrace(); 60 61 } 62 63 } 64 65 } View Code

测试景况RedHat 陆.肆 壹.安装 samba组件安装: (1)首先用rpm qa |grep
samba命令查证系…

    化解办法: SmbFile remoteFile = new
SmbFile(remotePhotoUrl+File.separator+fileName,auth);

以下是经过java的jcifs类库,访问互连网邻居上的共享文件代码。
相关类库下载地址:

基于SMB/JCIFS协议的共享文件上传和下载(局域网中国共产党享文件获取文件)  

SMB中期是IBM的贝瑞·费根鲍姆(Barry
Feigenbaum)研制的,其目标是将DOS操作系统中的本麻芋果件接口“中断一叁”改变为网络文件系统。后来微软对这几个发展实行了第三改变,那个改动后的本子也是最分布的版本。微软将SMB协议与它和3Com一齐发展的互连网管理程序结合在1块儿,并在Windows
for Workgroups和新兴的Windows版本中持续进入新的作用。

CIFS (Common Internet File System) 通用Internet文件系统

 

  在windows主机之间张开互连网文件共享是因而使用微软公司协和的CIFS服务达成的。 

 

  CIFS
是一个新建议的议和,它使程序能够访问远程Internet计算机上的文本并需求此Computer的劳务。CIFS
使用客户/服务器形式。客户程序请求远在服务器上的服务器程序为它提供劳动。服务器获得请求并赶回响应。CIFS是集体的或开放的SMB协议版本,并由Microsoft使用。SMB协议(见最终的名词解释)以后是局域互连网用于服务器文件访问和打字与印刷的磋商。象SMB协商一样,CIFS在高层运转,而不象TCP/IP协议那样运转在尾巴部分。CIFS能够作为是应用程序协议如文件传输协交涉超文本传输协议的3个落到实处。

 

  CIFS 能够令你达到以下职能: 

 

  1.造访服务器当半夏件并读写那个文件 

 

澳门葡京备用网址 ,  二.与其余用户一齐共享一些文本块 

 

  三.在断线时自动回复与网络的连接 

 

  四.施用西欧字符文件名 

 

  一般的话,CIFS使用户得到比FTP越来越好的对文本的主宰。它提供隐私的越来越直白地服务器程序接口,那比使用HTTP协议的浏览器越来越好。CIFS最标准的运用是windows用户能够从“网络邻居”中找到互联网中的别的主机并访问个中的共享文件夹.

 

  CIFS 是开放的正式还要早已被看成Internet应用程序标准被交付到IETF。

JCIFS是CIFS 在JAVA中的1个落到实处,是samba组织承担掩护开荒的叁个开源花色,专注于选择java语言对cifs协议的宏图和完成。他们将jcifs设计改为3个整机的,丰硕的,具有可增添才干且线程安全的客户端库。这一库能够采用于种种java虚拟机访问遵守CIFS/SMB网络传输协议的网络财富。类似于java.io.File的接口情势,在四线程的办事措施下被证实是卓有功效而易于接纳的

Java代码 

  1. package com.smb;  
  2.   
  3. import java.io.BufferedInputStream;  
  4. import java.io.BufferedOutputStream;  
  5. import java.io.File;  
  6. import java.io.FileInputStream;  
  7. import java.io.FileOutputStream;  
  8. import java.io.IOException;  
  9. import java.io.InputStream;  
  10. import java.io.OutputStream;  
  11.   
  12. import jcifs.smb.SmbFile;  
  13. import jcifs.smb.SmbFileInputStream;  
  14. import jcifs.smb.SmbFileOutputStream;  
  15.   
  16. public class Smbtest {  
  17.     /** 
  18.      * 从局域网中国共产党享文件中赢得文件并保留在地方磁盘上 
  19.      * @param remoteUrl 共享Computer路径 如:smb//administrator:123456@17二.1陆.十.136/smb/12二一.zip  , smb为共享文件 
  20.      * 注:即使一直出现三番五次不上,有提醒报错,并且错误信息是 用户名活密码错误 则修改共享机器的文件夹选项 查看 去掉共享轻巧文件夹的对勾就可以。 
  21.      * @param localDir 本地路线 如:D:/ 
  22.      */  
  23.     public static void smbGet(String remoteUrl,String localDir){  
  24.         InputStream in = null;  
  25.         OutputStream out = null;  
  26.         try {  
  27.             SmbFile smbFile = new SmbFile(remoteUrl);  
  28.             String fileName = smbFile.getName();  
  29.             File localFile = new File(localDir+File.separator+fileName);  
  30.             in = new BufferedInputStream(new SmbFileInputStream(smbFile));  
  31.             out = new BufferedOutputStream(new FileOutputStream(localFile));  
  32.             byte []buffer = new byte[1024];  
  33.             while((in.read(buffer)) != -1){  
  34.                 out.write(buffer);  
  35.                 buffer = new byte[1024];  
  36.             }  
  37.         } catch (Exception e) {  
  38.             e.printStackTrace();  
  39.         }finally{  
  40.             try {  
  41.                 out.close();  
  42.                 in.close();  
  43.             } catch (IOException e) {  
  44.                 e.printStackTrace();  
  45.             }  
  46.         }  
  47.     }  
  48.     /** 
  49.      * 把地面磁盘中的文件上传到局域网共享文件下 
  50.      * @param remoteUrl 共享Computer路径 如:smb//administrator:12345陆@17贰.1陆.十.136/smb 
  51.      * @param localFile帕特h 本地路径 如:D:/ 
  52.      */  
  53.     public static void smbPut(String remoteUrl,String localFilePath){  
  54.         InputStream in = null;  
  55.         OutputStream out = null;  
  56.         try {  
  57.             File localFile = new File(localFilePath);  
  58.             String fileName = localFile.getName();  
  59.             SmbFile remoteFile = new SmbFile(remoteUrl+”/”+fileName);  
  60.             in = new BufferedInputStream(new FileInputStream(localFile));  
  61.             out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));  
  62.             byte []buffer = new byte[1024];  
  63.             while((in.read(buffer)) != -1){  
  64.                 out.write(buffer);  
  65.                 buffer = new byte[1024];  
  66.             }  
  67.         } catch (Exception e) {  
  68.             e.printStackTrace();  
  69.         }finally{  
  70.             try {  
  71.                 out.close();  
  72.                 in.close();  
  73.             } catch (IOException e) {  
  74.                 e.printStackTrace();  
  75.             }  
  76.         }  
  77.     }  
  78.       
  79.     public static void main(String[] args) {  
  80.         smbPut(“smb://administrator:123456@172.16.10.136/smb”, “E:/1221.zip”);  
  81.         smbGet(“smb://administrator:123456@172.16.10.136/smb/1221.zip”, “D:/”);  
  82.   
  83.     }  
  84.   
  85. }  

 

------------------------------------------------------------------------------

    改为:SmbFile remoteFile = new
SmbFile(remotePhotoUrl+”/”+fileName,auth);便足以开始展览文件上传

  1 public class UploadDownloadUtil
  2 {
  3 
  4  /**
  5   * 从共享目录拷贝文件到地面
  6   * @param remoteUrl 共享目录上的文本路线
  7   * @param localDir 本地目录
  8   */
  9  public void smbGet(String remoteUrl, String localDir)
 10  {
 11   InputStream in = null;
 12   OutputStream out = null;
 13   try
 14   {
 15    SmbFile remoteFile = new SmbFile(remoteUrl);
 16    //这一句很首要
 17    remoteFile.connect();
 18    if (remoteFile == null)
 19    {
 20     System.out.println(“共享文件不设有”);
 21     return;
 22    }
 23    String fileName = remoteFile.getName();
 24    File localFile = new File(localDir + File.separator + fileName);
 25    in = new BufferedInputStream(new SmbFileInputStream(remoteFile));
 26    out = new BufferedOutputStream(new FileOutputStream(localFile));
 27    byte[] buffer = new byte[1024];
 28    while (in.read(buffer) != -1)
 29    {
 30     out.write(buffer);
 31     buffer = new byte[1024];
 32    }
 33   }
 34   catch (Exception e)
 35   {
 36    e.printStackTrace();
 37   }
 38   finally
 39   {
 40    try
 41    {
 42     out.close();
 43     in.close();
 44    }
 45    catch (IOException e)
 46    {
 47     e.printStackTrace();
 48    }
 49   }
 50  }
 51 
 52  /**
 53   * 从当地上传文件到共享目录
 54   * @Version1.0 Sep 25, 2009 3:49:00 PM
 55   * @param remoteUrl 共享文件目录
 56   * @param localFilePath 当半夏件相对路线
 57   */
 58  public void smbPut(String remoteUrl, String localFilePath)
 59  {
 60   InputStream in = null;
 61   OutputStream out = null;
 62   try
 63   {
 64    File localFile = new File(localFilePath);
 65 
 66    String fileName = localFile.getName();
 67    SmbFile remoteFile = new SmbFile(remoteUrl + “/” + fileName);
 68    in = new BufferedInputStream(new FileInputStream(localFile));
 69    out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));
 70    byte[] buffer = new byte[1024];
 71    while (in.read(buffer) != -1)
 72    {
 73     out.write(buffer);
 74     buffer = new byte[1024];
 75    }
 76   }
 77   catch (Exception e)
 78   {
 79    e.printStackTrace();
 80   }
 81   finally
 82   {
 83    try
 84    {
 85     out.close();
 86     in.close();
 87    }
 88    catch (IOException e)
 89    {
 90     e.printStackTrace();
 91    }
 92   }
 93  }
 94 
 95  public static void main(String[] args)
 96  {
 97   UploadDownloadUtil test = new UploadDownloadUtil();
 98   // smb:域名;用户名:密码@目的IP/文件夹/文件名.xxx
 99   // test.smbGet(“smb://szpcg;jiang.t:xxx@192.168.193.13/Jake/test.txt”,
100   // “c://”) ;
101   
102 //  test.smbPut(“smb://szpcg;jiang.t:xxx@192.168.193.13/Jake”,
103 //    “c://test.txt”);
104   
105   
拾六   //用户名密码无法有强字符,也正是不可能有特殊字符,不然会被看作分断管理
10七   test.smbGet(“smb://CHINA;xieruilin:123456Xrl@10.70.36.121/project/report/网络难题智能分析助手使用文书档案.doc”,
108   “c://Temp/”);
109 
110  }
111 
112 }

澳门葡京备用网址 5

澳门葡京备用网址 6

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website