其他分享
首页 > 其他分享> > 针对append、open方法,实现获取文件的xattr

针对append、open方法,实现获取文件的xattr

作者:互联网

针对append、open方法,实现获取文件的xattr

####1、针对create方法的改进

当一个文件create时,会主动获取父目录的xattr。如果父目录具有xattr且值为true,这时文件会被压缩;如果父目录的xattr值为false或者xattr不存在,这时文件不会被压缩。根据文件是否被压缩,设置文件的xattr值为true或者false

需要在create方法中,增加以下代码:

//如果isZip为true,这时文件会被压缩,需要设置文xattr也为true
if (isZip) {
	 value=("true").getBytes("utf-8");
}else{
	value=("false").getBytes("utf-8");
}
setXAttr(p, "user.zip", value);

####2、针对append和open方法,改进xattr的获取

####3、在调用getZipXattr4AppendOpen()和getZipXattr4Create()的参数传递问题

append中调用getZipXattr4AppendOpen(String)的具体代码如下:

boolean isZip=getZipXattr4AppendOpen(p.toString());

create中调用getZipXattr4Create(String)的具体代码如下:

boolean isZip=getZipXattr4Create(f.toString());

其中p.toString()是来自他所在的doCall()方法,而f.toString()来自create()

有区别的原因:p.toString()在传入文件为1.txt时,它的值为hdfs://192.168.202.34/user/cephlee/1.txt,并非我们期待的getZipXattr4Create()的参数1.txt。需要使用f.toString()获取原本的参数1.txt

标签:文件,true,open,create,toString,xattr,append
来源: https://blog.csdn.net/u014454538/article/details/81515237