`
liyinfeng56
  • 浏览: 94087 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

从服务器上共享文件上下载文件或上传文件

阅读更多
package com.login.example;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.UnknownHostException;

import jcifs.UniAddress;
import jcifs.smb.NtlmPasswordAuthentication;
import jcifs.smb.SmbException;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
import jcifs.smb.SmbFileOutputStream;
import jcifs.smb.SmbSession;

public class LonginExample {

	public static String userName = "administrator";
	public static String password = "administrator";
	public static String domainIP = "Tiancom.net";
	
	NtlmPasswordAuthentication auth;{
		getInParam();
	}
	
	
	private  void getInParam(){
		try {
			UniAddress dc = UniAddress.getByName(domainIP);
			System.out.println("UniAddress:"+dc);
		    auth = new NtlmPasswordAuthentication(domainIP, userName, password);
			System.out.println("auth:"+auth.getDomain());
			System.out.println("username:"+auth.getUsername());
			System.out.println("password:"+auth.getPassword());
			SmbSession.logon(dc,auth);
		} catch (UnknownHostException e) {
			e.printStackTrace();
			System.out.println("登录失败!!!");
		} catch (SmbException e) {
			e.printStackTrace();
			System.out.println("无法访问!!!");
		}
	}
	
	
	public static void main(String[] args) {
		
		
		final LonginExample test = new LonginExample();
		//单次执行
		//从共享目录拷贝文件到本地
		test.smbGet("smb://192.168.0.10/share/测试.txt", "D:\\UAPNETFile\\HYCZ");
		//向共享目录上传文件
		test.smbPut("smb://192.168.0.10/share","D:/UAPNETFile/测试.txt");
		
		
		
		
		//线程循环执行
	   /*new Thread() {
			public void run() {
				LonginExample test = new LonginExample();
				test.smbPut("smb://192.168.0.10/share","D:/UAPNETFile/测试.txt");
				System.out.println("1");
			}
		}.start();*/
		
		
		
		try {
			Thread.sleep(100000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	
	
	/**
	 * 从共享目录拷贝文件到本地
	 * */
	public void smbGet(String remoteUrl, String localDir) {
		InputStream in = null;
		OutputStream out = null;
		try {
			getInParam();
			SmbFile remoteFile = new SmbFile(remoteUrl, auth);
			if (remoteFile == null) {
				System.out.println("共享文件不存在");
				return;
			}
			String fileName = remoteFile.getName();
			File localFile = new File(localDir + File.separator + fileName);
			in = new BufferedInputStream(new SmbFileInputStream(remoteFile));
			out = new BufferedOutputStream(new FileOutputStream(localFile));
			byte[] buffer = new byte[1024];
			int i = 0;
			while ((i = in.read(buffer)) != -1) {
				out.write(buffer, 0, i);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				out.flush();
				out.close();
				in.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * 向共享目录上传文件
	 * */
	public  void smbPut(String remoteUrl,String localFilePath) {
		InputStream in = null;
		OutputStream out = null;
		try {
			File localFile = new File(localFilePath);
			String fileName = localFile.getName();
			SmbFile remoteFile = new SmbFile(remoteUrl, auth);
			//如果文件夹不存在,先建立文件夹
			if (!remoteFile.exists()) {
				remoteFile.mkdirs();
			}
			remoteFile = new SmbFile(remoteUrl+fileName, auth);
			//如果文件不存在先建立文件
			if(!remoteFile.exists()){
				remoteFile.createNewFile();
			}
			in = new BufferedInputStream(new FileInputStream(localFile));
			System.out.println("SmbFileOutputStream"+new SmbFileOutputStream(remoteFile));
			out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));
			byte[] buffer = new byte[1024];
			while(in.read(buffer)!=-1){
				out.write(buffer);
				buffer = new byte[1024];
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if(out!=null){
					out.close();
				}
				if(in!=null){
					in.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	} 
}




一下是转载的代码,没有用域,参考了下
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import jcifs.smb.SmbFileInputStream;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileOutputStream;

public class ReadShareFile {

	public static void main(String[] args) {
		new Thread() {
			public void run() {
				smbGet("smb://Administrator:01@192.168.0.47/share/测试.txt",
						"D:\\UAPNETFile\\");
				smbPut("smb://Administrator:01@192.168.0.47/share",
						"D:/远程上传.txt");
				System.out.println("操作已经完成");
			}
		}.start();
		try {   
            Thread.sleep(100);   
        } catch (InterruptedException e) {   
            e.printStackTrace();   
        }   
	}
    //获取远程共享的文件内容
	public static void smbPut(String remoteUrl, String localFilePath) {
		InputStream in = null;
		OutputStream out = null;
		try {
			File localFile = new File(localFilePath);
			String fileName = localFile.getName();
			SmbFile remoteFile = new SmbFile(remoteUrl + "/" + fileName);

			in = new BufferedInputStream(new FileInputStream(localFile));
			out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));
			byte[] buffer = new byte[1024];
			while (in.read(buffer) != -1) {
				out.write(buffer);
				buffer = new byte[1024];
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				out.close();
				in.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
  
	 //向远程共享文件夹上传内容
	public static void smbGet(String remoteUrl, String localDir) {
		InputStream in = null;
		OutputStream out = null;
		try {
			SmbFile remoteFile = new SmbFile(remoteUrl);
			if (remoteFile == null) {
				System.out.println("共享文件不存在");
				return;
			}
			String fileName = remoteFile.getName();
			File localFile = new File(localDir + File.separator + fileName);
			in = new BufferedInputStream(new SmbFileInputStream(remoteFile));
			out = new BufferedOutputStream(new FileOutputStream(localFile));
			byte[] buffer = new byte[1024];
			while (in.read(buffer) != -1) {
				out.write(buffer);
				buffer = new byte[1024];
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				out.close();
				in.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}
分享到:
评论

相关推荐

    nginx搭建文件服务器上传文件获取文件

    ### Nginx 搭建文件服务器:上传与获取文件 在互联网技术中,Nginx 被广泛用于构建高性能、稳定的Web服务器环境。本文将详细介绍如何利用 OpenResty + Nginx + Lua 实现一个文件服务器,该服务器支持文件上传与获取...

    winform上传文件到服务器

    本教程将深入探讨如何使用WinForm实现文件或文件夹的上传功能,将其发送到远程服务器。我们将关注的重点是如何构建这样的系统,包括客户端的交互设计以及与服务器的通信。 首先,我们需要在WinForm中创建一个用户...

    winform上传文件到共享文件夹

    总结来说,"winform上传文件到共享文件夹"是一个结合了文件操作、网络编程和UI交互的典型应用实例,对于学习和掌握C# Winform开发以及文件服务器交互有很好的实践意义。通过学习这个项目,开发者不仅可以提升编程...

    HTTP文件共享与上传服务器

    3. 文件分发:发布软件更新、教程或其他资源,让用户直接从服务器下载。 4. 测试环境:开发者可以搭建HTTP服务器进行Web应用的测试和调试。 综上所述,HTTP文件共享与上传服务器是一种实用的工具,通过简单的设置就...

    WinForm上传文件到服务器

    ### WinForm上传文件到服务器 #### 知识点概述 在.NET Framework中,Windows Forms(简称WinForms)是一种用于创建Windows桌面应用程序的技术。本篇内容介绍如何使用WinForm实现文件的上传功能,即将本地文件传输...

    服务器上传下载文件工具.rar

    在"服务器上传下载文件工具"这个压缩包中,可能包含了这样的FTP客户端软件,如FileZilla、WinSCP、Cyberduck等,或者是自定义的FTP脚本或程序。这些工具通常都具备上述特性,有的甚至提供更多高级功能,如SSL/TLS...

    winform & wpf _上传_下载文件_常用类 _服务器_C#_调用cmd

    本篇将详细讲解如何利用C#语言,结合命令行工具CMD来实现文件的上传和下载,以及如何在服务器上执行这些操作。 首先,我们关注的是文件的上传。在提供的代码片段中,`uploadFile`方法通过创建一个`Process`对象来...

    flashFXP(本地和服务器之间上传下载文件)

    FlashFXP是一款功能强大的FTP客户端软件,主要用于在本地计算机与远程服务器之间进行文件的上传、下载和管理。这款工具在IT行业中广泛应用于网站维护、软件分发、数据备份等场景,因其高效、稳定和易用性而备受青睐...

    基于ftp服务器,csv文件转换格式的文件上传下载实例

    首先,FTP服务器是提供文件存储和访问服务的服务器应用,允许用户从远程位置上传或下载文件。设置FTP服务器通常涉及到安装服务器软件(如vsftpd、ProFTPD等),配置服务器参数(如匿名访问、用户权限、端口设置等)...

    服务器上下载文件

    FTP允许用户从远程服务器上下载文件或上传文件到服务器。这个过程对于网站更新、数据备份、资源共享等场景至关重要。在描述中提到的“将本地文件上传到服务器”和“从服务器上下载文件”,都是FTP的主要功能。 FTP...

    FTP上传下载,本地同步服务器文件

    这通常通过FTP客户端的自动同步功能实现,可以定期检查本地和服务器上的文件差异,并进行必要的上传或下载操作,以确保两边的文件保持一致。 综上所述,FTP上传与下载是网络文件交换的基础操作,涉及FTP客户端和...

    共享文件上传

    - 重命名上传文件:避免文件名冲突和可能的安全漏洞,如路径遍历攻击,通常会为上传的文件生成随机或唯一的名字。 - 存储位置:上传的文件应存储在安全的目录下,避免直接暴露在Web根目录,防止直接访问。 6. ...

    实现上传文件到客户端和服务器功能

    在安卓应用开发中,实现文件上传到服务器的功能是一项常见的需求,这对于数据共享、备份和同步至关重要。本教程将深入探讨如何构建一个安卓应用程序,允许用户选择本地文件并将其上传到服务器,供其他安卓用户下载...

    局域网文件上传下载工具

    上传是指将本地电脑上的文件传输到其他网络位置,而下载则是相反的过程,是从网络位置获取文件并保存到本地。此工具通过提供一个简洁的界面,用户只需输入IP地址,就可以访问到共享的文件目录,进行文件的选择上传或...

    文件上传共享

    文件上传共享是网络环境中一种常见的交互方式,它允许用户将本地计算机上的文件通过互联网发送到服务器,以便其他用户可以访问、下载或进行协作编辑。在本文中,我们将深入探讨文件上传共享系统的实现、功能以及其在...

    服务器文件上传软件

    服务器文件上传软件是IT行业中一个不可或缺的工具,主要用于将本地计算机上的文件传输到远程服务器,以便在互联网上发布、共享或存储数据。标题提到的“服务器文件上传软件”很可能是指CuteFTP 8,这是一个非常知名...

    使用HTTP上传文件到WEB服务器

    本文将深入探讨如何使用HTTP上传文件到WEB服务器,并涉及相关的知识点。 首先,理解HTTP协议至关重要。HTTP是一种应用层协议,用于客户端(如浏览器)与服务器之间的数据交换。它定义了请求和响应的格式,以及如何...

    Android文件上传+服务器

    Android上传文件通常涉及`Multipart/form-data`编码方式,这是HTTP协议中用于处理多部分数据的一种格式,常用于文件上传。通过在请求头设置`Content-Type: multipart/form-data`,然后将文件内容作为请求体的一部分...

    Android使用ftp方式实现文件上传和下载

    * OTA 在线升级项目中,需要从 FTP 服务器上下载升级文件到 Android 设备中。 * 文件共享应用中,需要将文件从 Android 设备上传到 FTP 服务器中。 * 文件管理应用中,需要从 FTP 服务器下载文件到 Android 设备中。...

    ftp文件共享服务器

    "超经典ftp文件共享服务器"是一个小型、高效的FTP服务器软件,它使得用户可以轻松地在互联网上分享和获取文件。 FTP服务器的工作原理: FTP服务器通过监听特定的端口(默认为21)来接收客户端的连接请求。当客户端...

Global site tag (gtag.js) - Google Analytics