`
han_zw
  • 浏览: 174399 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

apache commons-vfs访问认证

    博客分类:
  • java
阅读更多

Apache Commons-VFS 为我们提供了对各种文件系统的标准访问接口,除了常用的文件类型( zip gzip jar ,本地文件系统)之外还可以直接操作多种服务器文件,如 ftp sftp 等。在进行服务器文件操作时通常要指定访问的用户名和密码。接下来就以 ftp 服务器的文件系统的连接为例进行介绍。

注:涉及到的 Apache Commons-VFS 版本为 3.1

1.       文件访问 uri 中指定认证信息

这也是最简单直接的一种访问,文件的 uri 格式为:

schema://[ 用户名 ]:[ 密码 ]@[host]:[port][ 文件 path]

ftp 为例就是: ftp://admin:123456@192.168.1.1:21/data

获得 FileObject 的关键语句如下:

FileObject fileObj = fsManager.resolveFile(vfsPath);
String vfsPath = "ftp://admin:123456@192.168.1.1:21/data";
FileObject fileObj = fsManager.resolveFile(vfsPath);

2.       密码加密

上例的连接方式可以简单直接的完成远程 ftp 的连接,但是缺点也是比较明显的,那就是密码已明文形式存在的。出于安全的考虑,接下来对密码进行加密处理。

密码密文的生成的方式可以通过 commons-vfs 提供的工具类:

java -cp commons-vfs-2.0.jar org.apache.commons.vfs2.util.EncryptUtil encrypt 123456 

输入的密码 123456 加密后的结果为 0471BC0FDAC99FF9EA9E1CDD3F350026

现在我们的连接方式也变成了:

String vfsPath = "ftp://admin:{0471BC0FDAC99FF9EA9E1CDD3F350026}@192.168.1.1:21/data";

其实 vfs 中执行这个加密的操作也很简单,只有下面两句代码:

Cryptor cryptor = CryptorFactory.getCryptor();
String pwdEncrypt = cryptor.encrypt(yourpassword);

3.  通过 FileSystemOptions 方式

除了在 uri 中显示指定认证信息之外还可以通过 FileSystemOptions 来完成。

StaticUserAuthenticator auth = new StaticUserAuthenticator("username", "password", null);
FileSystemOptions opts = new FileSystemOptions(); DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(opts, auth);
FileObject fo = VFS.getManager().resolveFile("ftp://192.168.1.1:21/data", opts);

但是这种方式指定密码时就不能支持密文的方式了。

4.       一点小技巧

通过 VFS.getManager() 方式获得的 FileSystemManager 对应的实现类为 StandardFileSystemManager ,在其抽象基类中有一个 setBaseFile () 方法可以设置本次会话的根目录,这样在文件操作的 uri 中就可以只设定相对于该 basefile 的相对路径了。

Set the base file using setBaseFile() . The base file is used to resolve relative URI passed to resolveFile() . This step is optional.

分享到:
评论

相关推荐

    commons-logging-1.2.jar commons-vfs-2.2.jar

    标题中的"commons-logging-1.2.jar"和"commons-vfs-2.2.jar"是两个Java库的文件名,分别代表Apache Commons Logging和Apache Commons VFS(Virtual File System)的不同版本。这两个库在Java应用程序开发中经常被...

    commons-vfs-2.0.zip

    `commons-vfs-2.0.zip`包含了Apache Commons VFS 2.0版本的所有相关jar包,方便用户下载和使用。这个版本相较于早期版本可能引入了更多的改进、修复和新特性,旨在提高性能和稳定性,并提供更好的跨平台支持。 ...

    commons-vfs-1.0-src

    9. **源码分析**:通过阅读"commons-vfs-1.0-src"的源码,我们可以学习到如何设计和实现一个模块化的文件系统框架,以及如何优雅地处理异构资源的抽象和访问。 10. **实战应用**:Apache Commons VFS常被用于Web...

    commons-logging-1.2.jar,commons-vfs2-2.2.jar,jxl.jar

    接下来,`commons-vfs2-2.2.jar`代表Apache Commons VFS(Virtual File System),这是一个强大的文件系统抽象层。它允许开发者通过单一的API访问各种不同的文件系统,包括本地文件系统、FTP、HTTP、SFTP等。Commons...

    commons-vfs jar包

    apache 虚拟文件系统 vfs jar包~~~~

    commons-vfs2-2.2.jar

    通过VFS对文件进行一些操作,包括写入、读取文件,判断文件是否可读可写等使用2.0版本来实现。

    commons-vfs-1.0.zip

    "commons-vfs-1.0.zip"是一个包含Apache Commons VFS 1.0版本的压缩包,便于用户下载和共享。 Apache Commons VFS的核心概念是虚拟文件系统(VFS),它将各种不同类型的文件系统抽象成统一的接口,通过这个接口,...

    commons-vfs-1.0的javaDoc

    在`commons-vfs-1.0`中,`FileProvider`是一个关键接口,它实现了对特定文件系统类型的访问。例如,`DefaultFileProvider`处理本地文件系统,而`FtpFileProvider`则处理FTP文件系统。每个`FileProvider`都对应一种或...

    apache-commons-vfs.jar

    jar包,亲测可用

    commons-vfs-2.1源码

    总之,Apache Commons VFS-2.1的源码是学习和理解文件系统抽象层如何工作的宝贵资源。通过深入研究源码,开发者可以学习到如何设计和实现一个跨平台、跨文件系统的解决方案,以及如何处理各种文件系统特有的挑战。...

    Apache Commons 所有包最新版本 含SRC (6/7)

    commons-attributes-2.2-src.zip commons-attributes-2.2.zip commons-beanutils-1.8.0-BETA-src...validator-1.3.1-src.zip<br>commons-validator-1.3.1.zip<br>commons-vfs-1.0-src.zip<br>commons-vfs-1.0.zip

    commons-lang-2.6.jar包

    commons-lang-2.6.jar包commons-lang-2.6.jar包commons-lang-2.6.jar包commons-lang-2.6.jar包commons-lang-2.6.jar包加源码

    apache-commons-vfs-javadoc-2.0-11.el7.noarch.rpm

    离线安装包,亲测可用

    Apache Commons 所有包最新版本 含SRC (7/7)

    commons-attributes-2.2-src.zip commons-attributes-2.2.zip commons-beanutils-1.8.0-BETA-src...validator-1.3.1-src.zip<br>commons-validator-1.3.1.zip<br>commons-vfs-1.0-src.zip<br>commons-vfs-1.0.zip

    commons-vfs:Apache Commons VFS

    Apache Commons VFS项目 Apache Commons VFS是一个虚拟文件系统库。 文献资料 可以在上找到更多信息。 可以浏览 。 与Apache Commons VFS Project的用法有关的问题应张贴到。 在哪里可以获得最新版本? 您可以从...

    commons-pool2-2.9.0-API文档-中英对照版.zip

    Maven坐标:org.apache.commons:commons-pool2:2.9.0; 标签:apache、commons、pool2、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化...

    commons-io-2.6.zip

    9. **FileWatcher**: 虽然不直接在`commons-io`库中,但在Apache Commons中的`vfs`模块中,有一个`FileWatcher`接口,它可以监听文件系统的变化,这对于实时监控文件变化的应用程序非常有用。 10. **IOException**:...

    apache-commons-vfs-2.0-11.el7.noarch.rpm

    离线安装包,亲测可用

    vfs-s3:适用于Apache commons-vfs(虚拟文件系统)项目的Amazon S3驱动程序

    适用于VFS(Apache Commons虚拟文件系统)的Amazon S3驱动程序最新分支4.xx如何将依赖项添加到您的Maven构建中对于具有嵌入式AWS开发工具包的工件(引导的最简单方法) <dependency> <groupId>...

    apache-commons-vfs-examples-2.0-11.el7.noarch.rpm

    离线安装包,亲测可用

Global site tag (gtag.js) - Google Analytics