jxta传统的文件共享方式是:
共享一个文件,将文件拷贝到安装目录share目录下,默认就共享这个share目录,每次启动程序,用startApp去初始化shares.ser这个文件,重新发布一下共享文件。(shares.ser保存了共享文件的路径以及一些文件共享协议,初始化shares.ser的同时,发出共享文件的广告。退出的时候把shares.ser文件中信息的清除)。在jxta提供的例子,我们可以看到startApp后,还要去遍历一下默认共享目录,用share()这个方法去再次共享一下文件。我想这个是为了保证shares.ser文件里面的信息跟默认共享目录里面的信息同步吧。
这里面有一个问题,我们试想一下,如每次共享一下,就要把文件拷贝到默认共享目录下,如果小文件,我们可能感觉不到有什么不妥,但是大文件,就要费一下时间,如果做成软件,终端用户就感觉难用了且一个目。而录下如果放大量的文件的话,那就更影响效率了。
下面是我想到的解决方法:
我们共享文件时,都是在不同的目录里面找文件,我们不去做拷贝,只是把文件的路径以及一些文件信息记录在一个文件里,这个可以以shares.xml的文件存取(格式可以自定义,自己怎么好理解就怎么定义),把这个文件放在安装目录下,shares.ser不用变还是放在原来的目录(也可以自定义到哪个地方,只需要每次启动程序初始化的时候,调用startApp时指定),退出时不用去清理shares.ser文件。这里要说明一下,前面说的shares.xml只是一个备份资源副本,为了保证shares.ser文件中共享文件信息的完整性和文件不重复信息,在新增共享文件时,根据shares.xml里面的文件信息,查看是否已经共享过了,如共享过了就不用共享了(每次共享文件,都调用share()这个方法,share()一个文件,就会在shares.ser里面增加一个共享文件信息,而不去判断是否有没有这个文件信息)。因为每次重新启动程序,都是startApp()根据shares.ser里面的共享文件信息进行广播的。
阅读(373) | 评论(0) | 转发(0) |