怎么获得一个文件的唯一标识符(UUID)
怎么获得一个文件的唯一标识符(在文件的整个生命周期中)?该文件的内容是可变的,路径和名字也是可变的,创建时间也是可变的,因为可能从一个地方复制到另一个地方(如在代码的版本控制器中)。详细的说是:需要在文件的整个生命周期中为文件创建一个一直不变的UUID,让该UUID一直"跟随"着该文件,从它创建、期间可能改名、修改内容、从一个地方copy到另一个地方(包含从一个计算机copy到另一个计算机)。 但是不能写在文件中。整个需求可能有点苛刻,但是希望大家出出主意,顶者有分,谢谢了! --------------------编程问答-------------------- System.getTime();最为文件名 --------------------编程问答-------------------- 做为 not 最为 --------------------编程问答-------------------- 谢谢,可是文件名是可以被修改的啊! --------------------编程问答-------------------- 不能写在文件中,怎么保证uuid和文件对应?另外建立个数据库表?产生一个uuid,然后建立个表,动态跟踪这个文件和这个id? --------------------编程问答--------------------
这就不好弄了,你的文件什么都能改变,怎么识别之? --------------------编程问答-------------------- 谢谢各位,我的意思是在不增加开销的情况下(比如在文件系统中维护一个映射或者数据库表),是有点难度,本来想创建时间有戏,可是如果从一个地方copy到另外一个地方,创建时间也变了。 --------------------编程问答-------------------- 你这也太动态了, 只有数据库里做文章了, 生成一个UUID 对应一个文件,再把文件的路径\文件名存在数据里(对应这个UUID), 当对文件进行操作里动态的改变数据中的路径\文件名(保证能找到文件)。
如果按LZ的意思, 我想一辈子也找不到文件了。 --------------------编程问答-------------------- 文件除了名字,创建时间,大小 应该还有其他的信息比如说:描述,作者等信息可以添加 这样你怎么改也不会改变吧,这些信息是写在哪里的不清楚:( --------------------编程问答-------------------- 文件除了名字,创建时间,大小 应该还有其他的信息比如说:描述,作者等信息可以添加 这样你怎么改也不会改变吧,这些信息是写在哪里的不清楚:(
----谢谢啊!我以前试过创建一个记事本,然后在其属性中填上一些信息(比如说:描述,作者),但是我用msn传给另外的机器,这些信息就消失了,另外也许只有windows才有这些信息,不能跨平台啊,这也是为什么java API中没有getCreateTime的原因啊! --------------------编程问答-------------------- 各位大牛帮忙想想啊,谢谢 --------------------编程问答-------------------- 大牛们帮帮忙啊,谢谢 --------------------编程问答-------------------- 这个东西要根据逻辑来设计了。你创建文件的时候就记录文件的历史变动记录。最好在数据库中建表记录。
到时候更加变动历史来查询区分就可以了。
当然这样效率不高。不过你什么都在变,又不能写入文件。也真麻烦。
还有一个方法,不知道满足你的要求不。就是写在文件名后边。比如
xxx.txt.uuid 你看文件名称的时候,就看xxx.txt部分。后边就做为uuid来识别。 --------------------编程问答-------------------- 大家帮帮忙 看看有没有合适的方法 谢谢了 --------------------编程问答-------------------- 大家帮帮忙 看看有没有合适的方法 谢谢了 --------------------编程问答-------------------- 大家帮帮忙 看看有没有合适的方法 谢谢了 --------------------编程问答--------------------
我和你遇到的问题是一模一样的,你这个问题解决了吗?怎么解决的? --------------------编程问答-------------------- 我觉得吧,既然不能在文件名、创建时间等等属性上做文章,就生成一个uuid加到文件内部(比如文件头部信息或者直接文件第一行),以后判断文件时,就从文件中获取这个uuid来进行识别。
或者,就像上面说的,用一个数据库表,动态跟踪,每当文件变了,就更新数据库表。
--------------------编程问答-------------------- 专门维护一个 .ini文件。用于保存文件信息。 --------------------编程问答-------------------- 文件的第一行用来存储文件名 --------------------编程问答-------------------- 很显然楼主想实现一个文件系统! --------------------编程问答-------------------- 1、信息只能记录在文件中
2、信息记录在用户不可见区段
3、信息加密,用户很难解密 --------------------编程问答-------------------- 自己在你的文件里建个配置文件,里面写上唯一标识符值,这样不就可以随着别人复制而不会改变了吗。。。
别人复制你的文件就自动执行一个算法将那个配置文件的唯一标识符自动+1,就可以了。 --------------------编程问答-------------------- --------------------编程问答-------------------- 如果用文件头的话,是基于驱动。在文件创建时自动在文件头加标识。那么应用层再用时是通过调驱动的方法去获得文件的标识。这样应该可以实现,我也正在研究 --------------------编程问答-------------------- 要不看看Windows源代码? --------------------编程问答--------------------
我认为应该遵循OS的文件概念:
一个文件换了位置就不是原来的文件了。
文件只能根据路径+文件名字来区分。 --------------------编程问答-------------------- 要不名字以特殊形式,再遍历目录,找到包含这特殊字符串的文件 --------------------编程问答-------------------- 楼主,这个问题解决了吗,我也想要一个文件唯一标识 --------------------编程问答-------------------- 专门维护一个文件来保存信息吧吧 --------------------编程问答-------------------- 定义你自己的文件格式,这个文件只能是2进制文件。
比如一个xls文件,你从他的属性里可以看到它的创建时间、公司、作者……
xls有自己的文件格式,某些段就是用来保存这些信息的,你自己也可以定义自己的文件格式。 --------------------编程问答-------------------- windows下NTFS格式是可以实现的,可以将附加信息加在文件里面,用户也看不到。但linux下就不知道怎么搞了。 --------------------编程问答-------------------- 这玩意计算文件的MD5值不就行了吗?????????????????????????????????
补充:Java , Java SE