`

java常用操作方法(六) 远程文件操作 RemoteFileUtil

    博客分类:
  • java
阅读更多
package com.jinqiao.util;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;

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

/**
    *  @description:    远程共享读写文件操作工具类   
*  @author:        
*  @createDate:    
*/
public class RemoteFileUtil {

private String remoteHostIp;  //远程主机IP
private String account;       //登陆账户
private String password;      //登陆密码
    private String shareDocName;  //共享文件夹名称
   
    //配置文件
private PropertiesReader reader = new PropertiesReader("/uploadpath.properties");
   
    /**
     * 默认构造函数
     */
    public RemoteFileUtil(){
    this.remoteHostIp = reader.getProperty("REMOTE_HOST_IP");
this.account = reader.getProperty("LOGIN_ACCOUNT");
this.password = reader.getProperty("LOGIN_PASSWORD");
this.shareDocName = reader.getProperty("SHARE_DOC_NAME");
    }
   
/**
* 构造函数
* @param remoteHostIp  远程主机Ip
* @param account       登陆账户
* @param password      登陆密码
* @param sharePath     共享文件夹路径
*/
    public RemoteFileUtil(String remoteHostIp, String account, String password,String shareDocName) {
this.remoteHostIp = remoteHostIp;
this.account = account;
this.password = password;
this.shareDocName = shareDocName;
}
   
    /**
     * 对远程共享文件进行读取所有行
     * @param remoteFileName  文件名  说明:参数为共享目录下的相对路径
     *                                若远程文件的路径为:shareDoc\test.txt,则参数为test.txt(其中shareDoc为共享目录名称);
     *                                若远程文件的路径为:shareDoc\doc\text.txt,则参数为doc\text.txt;
     * @return  文件的所有行
     */
//    public List<String> readFile(String remoteFileName){
    public SmbFile readFile(String remoteFileName){
    SmbFile smbFile = null;
//    BufferedReader reader = null;
//    List<String> resultLines = null;
    //构建连接字符串,并取得文件连接
      String conStr = null;
    conStr = "smb://"+account+":"+password+"@"+remoteHostIp+"/"+shareDocName+"/"+remoteFileName;
    try {
smbFile = new SmbFile(conStr);
} catch (MalformedURLException e) {
e.printStackTrace();
}


return smbFile;
//        //创建reader
// try {
// reader = new BufferedReader(new InputStreamReader(new SmbFileInputStream(smbFile)));
// } catch (SmbException e) {
// e.printStackTrace();
// } catch (MalformedURLException e) {
// e.printStackTrace();
// } catch (UnknownHostException e) {
// e.printStackTrace();
// }
// //循环对文件进行读取
//        String line;
// try {
// line = reader.readLine();
// if(line != null && line.length()>0){
// resultLines = new ArrayList<String>();
// }
// while (line != null) {
//         resultLines.add(line);
// line = reader.readLine();
//         }
// } catch (IOException e) {
// e.printStackTrace();
// }
//        //返回
// return resultLines;
    }
   
    /**
     * 对远程共享文件进行写入
     * @param is                本地文件的输入流
     * @param remoteFileName    远程文件名    说明:参数为共享目录下的相对路径
     *                                             若远程文件的路径为:shareDoc\test.txt,则参数为test.txt(其中shareDoc为共享目录名称);
     *                                             若远程文件的路径为:shareDoc\doc\text.txt,则参数为doc\text.txt;
     * @return 
     */
    public boolean writeFile(InputStream is,String remoteFileName){
    SmbFile smbFile = null;
    OutputStream os = null;
    byte[] buffer = new byte[1024*8];
    //构建连接字符串,并取得文件连接
      String conStr = null;
    conStr = "smb://"+account+":"+password+"@"+remoteHostIp+"/"+shareDocName+"/"+remoteFileName;
    try {
smbFile = new SmbFile(conStr);
} catch (MalformedURLException e) {
e.printStackTrace();
return false;
}

//获取远程文件输出流并写文件到远程共享文件夹
try {
os = new BufferedOutputStream(new SmbFileOutputStream(smbFile));
while((is.read(buffer))!=-1){
os.write(buffer);
}
} catch (Exception e) {
e.printStackTrace();
return false;
}

    return true;
    }
   
   
    /**
     * 对远程共享文件进行写入重载
     * @param localFileName   要写入的本地文件全名
     * @param remoteFileName  远程文件名    说明:参数为共享目录下的相对路径
     *                                           若远程文件的路径为:shareDoc\test.txt,则参数为test.txt(其中shareDoc为共享目录名称);
     *                                           若远程文件的路径为:shareDoc\doc\text.txt,则参数为doc\text.txt;
     * @return
     */
    public boolean writeFile(String localFileFullName ,String remoteFileName){
    try {
return writeFile(new FileInputStream(new File(localFileFullName)),remoteFileName);
} catch (FileNotFoundException e) {
e.printStackTrace();
return false;
}
    }
   
    /**
     * 对远程共享文件进行写入重载
     * @param localFileName   要写入的本地文件
     * @param remoteFileName  远程文件名    说明:参数为共享目录下的相对路径
     *                                           若远程文件的路径为:shareDoc\test.txt,则参数为test.txt(其中shareDoc为共享目录名称);
     *                                           若远程文件的路径为:shareDoc\doc\text.txt,则参数为doc\text.txt;
     * @return
     */
    public boolean writeFile(File localFile ,String remoteFileName){
    try {
return writeFile(new FileInputStream(localFile),remoteFileName);
} catch (FileNotFoundException e) {
e.printStackTrace();
return false;
}
    }
   
    /** *** 
     * 从smbMachine读取文件并存储到localpath指定的路径 
    *  
     * @param smbMachine 
     *            共享机器的文件,如smb://xxx:xxx@10.108.23.112/myDocument/测试文本.txt,xxx:xxx是共享机器的用户名密码 
   * @param localpath 
     *            本地路径 
   * @return 
     */ 
   /* public File readFromSmb(String smbMachine,String localpath){  
        File localfile=null;  
        InputStream bis=null;  
        OutputStream bos=null;  
        try {  
            SmbFile rmifile = readFile(smbMachine);  
            String filename=rmifile.getName();  
            bis=new BufferedInputStream(new SmbFileInputStream(rmifile));  
            localfile=new File(localpath+File.separator+filename);  
            bos=new BufferedOutputStream(new FileOutputStream(localfile));  
            int length=rmifile.getContentLength();  
            byte[] buffer=new byte[length];  
            Date date=new Date();  
            bis.read(buffer);  
            bos.write(buffer);              
            Date end=new Date();  
            int time= (int) ((end.getTime()-date.getTime())/1000);  
            if(time>0)  
                System.out.println("用时:"+time+"秒 "+"速度:"+length/time/1024+"kb/秒");              
        } catch (Exception e) {  
            System.out.println(e.getMessage());  
              
        }finally{  
            try {  
                bos.close();  
                bis.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }              
        }
        return localfile;  
    }   */
/*    public boolean removeFile(File file) {  
        return file.delete();  
    }*/
   
    public static void main(String[] args){
//    RemoteFileUtil util = new RemoteFileUtil();
//    List<String> lines = util.readFile("test.txt");
//    for (String string : lines) {
// System.out.println(string);
// }
//        util.writeFile(new File("f:/a.txt"), "new.txt");
//    File file=util.readFromSmb("jdk6.ZH_cn.chm","f:/");
//    util.writeFile(file, "123.chm");
////    File file=new File("f:/a.txt");
//    new File("f:/jdk6.ZH_cn.chm").delete();
    }
}



分享到:
评论

相关推荐

    JAVA代码实现远程操作服务器文件

    "JAVA代码实现远程操作服务器文件" Titulo: JAVA代码实现远程操作服务器文件 JAVA代码实现远程操作服务器文件是指使用JAVA语言实现远程操作服务器文件的功能,实现FTP,共享文件夹操作。该功能可以实现远程服务器...

    java 读取远程文件目录 及文件方式

    本文件是将 Java 中 通过远程url访问 转换成 HTML 文件 ,通过 dom4j转换成Java对象元素

    java远程读写服务器文件

    主要实现的是登录服务器操作服务器的中的文件数据,支持读写的操作。主要使用的方法getProperties是设置配置的login(参数一是访问服务器的配置,参数二是设置读还是写)方法是读写连接服务器

    Java文件夹复制(远程复制(网络传输),用于远程备份文件)

    总的来说,Java 文件夹复制和远程备份涉及到了文件操作、网络通信、异常处理、效率优化以及数据安全等多个方面,这些知识点对于构建一个可靠的远程备份系统至关重要。在实际应用中,还需要根据具体需求进行定制和...

    JAVA读取远程网页文件并保存本地

    JAVA读取远程网页文件并保存本地 从远程URL地址获取网页文件下载到本地 这个方法可以生成静态HTML文件使用!

    用java实现远程文件传输

    在Java编程环境中,实现远程文件传输是一项常见的任务,特别是在分布式系统和网络应用中。这个小程序可能涉及到了几个关键的Java技术点,包括网络编程、I/O流处理以及可能的多线程技术。以下是对这些知识点的详细...

    JAVA代码实现远程服务器的文件操作步骤及JAR包

    在Java编程中,远程服务器的文件操作是一项常见任务,尤其在分布式系统和云计算环境中。本文将详细介绍如何使用Java实现这一功能,并提供相关的JAR包。主要涉及的技术包括Linux的SCP(Secure Copy)协议、Java的...

    java上传文件到linux服务器,操作linux服务器上文件,下载linux服务器文件,删除linux服务器文件

    本篇文章将深入探讨如何使用Java来实现对Linux服务器的文件上传、操作、下载和删除,以及如何借助ganymed-ssh2库实现远程操作。 首先,让我们了解基础概念。Linux服务器是一种基于Linux操作系统并提供网络服务的...

    java,jsp读取远程图片到本地服务器

    综上所述,"java,jsp读取远程图片到本地服务器"涉及到的技术点包括Java和JSP的基础知识、HTTP通信、文件操作、HTML解析、在线编辑器集成以及性能优化等多个方面。理解并掌握这些知识点对于开发此类应用至关重要。

    Java常用函数大全

    6. **BSFile.java**: 文件操作是Java开发中的常见任务,这个文件可能包含了创建、删除、移动、复制文件或目录的方法,如`createFile()`、`deleteFile()`、`copyFile()`、`renameFile()`等。 7. **...

    JAVA远程接口

    RMI使用Java语言接口定义了远程对象,并集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。RMI使原先的程序在同一操作系统的方法调用,变成了不同操作系统之间程序的方法调用。 RMI的优点: * ...

    Java写入大数据文件

    Java语言中写入大数据文件是指使用Java语言编写程序将大量数据写入到文件中的一种操作。这种操作在实际应用中非常常见,如数据分析、数据挖掘、科学计算等领域。在Java中,写入大数据文件通常需要考虑文件的大小、...

    java实现sftp操作工具类

    1分让你得到sftp常用操作工具,工具实现如下操作: 1)得到当前工作目录地址 2)改变目录为配置的远程目录 3)取文件目录列表 4)取文件列表 5)下载文件 6)复制文件 7)删除文件 8)目录是否存在,文件是否存在 9)移动文件 ...

    java代码在window获取linux文件

    在Java编程环境中,有时我们需要在Windows系统中远程访问Linux服务器以获取或操作文件。`JSch`库提供了一个这样的解决方案,它是一个纯Java实现的SSH2库,允许开发者连接到远程计算机并执行命令,传输文件等。本篇将...

    Java运用ganymed-ssh2-build210.jar包远程连接操作linux服务器

    本文档的标题是"Java 运用 Ganymed-SSH2 库远程连接操作 Linux 服务器",这意味着我们将使用 Java 语言来远程连接 Linux 服务器,并使用 Ganymed-SSH2 库来实现远程连接和文件传输。 描述解释 描述部分提到使用 ...

    java通过代码登录远程linux服务器并执行linux命令源码以及jar包

    总的来说,Java通过JSch库远程登录Linux服务器并执行命令,是Java与Linux系统交互的一种常用方式,尤其适用于自动化运维和脚本化的任务。通过理解并实践这些代码,你将能够更好地理解和掌握Java进行远程操作的能力。

    远程控制java实现

    Java 远程控制技术是利用 Java 的网络编程能力来实现在不同计算机间进行交互操作的一种技术。在 Java 中,远程控制通常涉及到 RMI (Remote Method Invocation)、JMX (Java Management Extensions) 和 SSH (Secure ...

    Java实现远程桌面连接

    Java实现远程桌面连接的properjavardp源码工程,可直接运行。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...

    本地java实现远程oracle备份还原

    本教程将详细阐述如何使用Java编程语言实现远程Oracle数据库的备份与还原功能,尤其适用于两台不在同一IP段的服务器之间操作。 首先,我们需要理解Oracle数据库备份的基本概念。备份是为了防止数据丢失,通常分为...

    nc文件读写 java版本

    Java版本的NetCDF库使得开发者能够在Java环境中方便地进行NetCDF文件的读取和写入操作。 1. **NetCDF简介** - NetCDF是一种通用的数据模型,不仅定义了数据结构,还包含了元数据,用于描述数据的含义和布局。 - ...

Global site tag (gtag.js) - Google Analytics