6.4 访问和操作远程文件

下面实例化一个FttpAdapter类,并输入一个FTTP路径,可以是一个目录路径,也可以是个文件路径。

  1. FttpAdapter fa = new FttpAdapter("fttp://192.168.0.8/home/qianfeng.py/fttp/ tmp/1.log");

FttpAdapter类提供了一系列访问远程文件的方法:

❏ createDirectory和createFile方法分别用于创建目录和文件。

❏ rename方法用于进行重命名,比如将fa的文件名重命名为2.log:

  1. fa.rename("2.log")

rename方法返回一个新的FttpAdapter对象,表示命名后的文件。

❏ copyTo方法用于进行集群内复制,比如:

  1. fa.copyTo("fttp:// 192.168.0.9/home/qianfeng.py/fttp/tmp/3.log")

表示将fa文件复制到192.168.0.9计算机上的指定目录下。

❏ copyTo方法返回一个新的FttpAdapter对象,表示复制后的文件。

❏ delete方法用于删除该文件,比如:

  1. fa.delete()

6.4 访问和操作远程文件 - 图1注意

在某些情况下,delete方法可能没有那么快及时生效,为了能高效读写文件,如果虚拟机内有缓存,导致不能马上删除,可以通过修改文件后缀设置一个删除标记或者移入一个回收站文件夹,再在其他时间统一删除。

getProperty方法用于获取文件或者目录属性,它返回一个FileProperty对象,此对象中包含以下方法:

❏ exists()文件或者目录存在

❏ isFile()是文件

❏ isDirectory()是目录

❏ isHidden()是隐藏文件

❏ canRead()可读

❏ canWrite()可写

❏ lastModifiedDate()最后修改时间

❏ length()文件长度

❏ getParent()父目录

❏ getName()名称

❏ getPath()路径

❏ list()子文件列表

用于获取文件属信信息的方法如下:

❏ getChildProperty方法返回一个FileProperty数组,用于获取所有子文件的属性。

❏ FttpOperateDemo用于演示创建一个远程文件目录,并在该目录下创建、重命名、复制文件,打印文件属性,最后删除的基本操作功能。

运行步骤如下:

1)启动ParkServerDemo:

  1. java -cp fourinone.jar; ParkServerDemo

2)启动一到多个FttpServer:

  1. java -cp fourinone.jar; FttpServer localhost

3)运行FttpOperateDemo:

  1. java -cp fourinone.jar; FttpOperateDemo

完整的demo源码如下:

  1. // FttpOperateDemo
  2. import com.fourinone.FttpAdapter;
  3. import com.fourinone.FttpException;
  4. import com.fourinone.FttpAdapter.FileProperty;
  5.  
  6. public class FttpOperateDemo{
  7. public static void printProp(FileProperty prop){
  8. System.out.println("exists:"+prop.exists());
  9. System.out.println("isFile:"+prop.isFile());
  10. System.out.println("isDirectory:"+prop.isDirectory());
  11. System.out.println("isHidden:"+prop.isHidden());
  12. System.out.println("canRead:"+prop.canRead());
  13. System.out.println("canWrite:"+prop.canWrite());
  14. System.out.println("lastModifiedDate:"+prop.lastModifiedDate());
  15. System.out.println("length:"+prop.length());
  16. System.out.println("getParent:"+prop.getParent());
  17. System.out.println("getName:"+prop.getName());
  18. System.out.println("getPath:"+prop.getPath());
  19. if(prop.isDirectory())
  20. System.out.println("fp.list():"+prop.list().length);
  21. System.out.println("");
  22. }
  23.  
  24. public static void main(String[] args){
  25. try{
  26. FttpAdapter dir = new FttpAdapter("fttp://localhost/d:/fttp/tmp/");
  27. dir.createDirectory();
  28. FileProperty dirProp = dir.getProperty();
  29. printProp(dirProp);
  30.  
  31. FttpAdapter f1 = new FttpAdapter(dirProp.getPath(),"1.log");
  32. FttpAdapter f2 = null;
  33. FttpAdapter f3 = null;
  34.  
  35. if(dirProp.exists()){
  36. f1.createFile();
  37. f2 = f1.rename("2.log");
  38. f3 = f2.copyTo("fttp://localhost/d:/fttp/tmp/3.log");
  39. }
  40.  
  41. FileProperty[] childProps = dir.getChildProperty();
  42. for(int i=0;i<childProps.length;i++){
  43. printProp(childProps[i]);
  44. }
  45.  
  46. System.out.println(f1.delete());
  47. System.out.println(f2.delete());
  48. System.out.println(f3.delete());
  49. System.out.println(dir.delete());
  50.  
  51. dir.close();
  52. f1.close();
  53. f2.close();
  54. f3.close();
  55. }catch(FttpException fe){
  56. fe.printStackTrace();
  57. }
  58. }
  59. }