以前是搞J2EE Web开发的,近来开始搞C/S开发,以前在框架下面做事,突然没了,很不适应.特别是C/S要处理相对多的字符串操作,文件操作,感觉很不上手,common IO 看了一些,用上后感觉好多了.
1 byte[] org.apache.commons.io.ByteOrderMark.getBytes()
/**
* Return a copy of the BOM's bytes.
*
* @return a copy of the BOM's bytes
*/
public byte[] getBytes() {
byte[] copy = new byte[bytes.length];
for (int i = 0; i < bytes.length; i++) {
copy[i] = (byte)bytes[i];
}
return copy;
}
这里 bytes 为已存在的byte数组,但这里重新复制了一个返回,目的是为了防止bytes 被其它的对象持有.
2 boolean org.apache.commons.io.FileUtils.isSymlink(File file) throws IOException
public static boolean isSymlink(File file) throws IOException {
if (file == null) {
throw new NullPointerException("File must not be null");
}
if (FilenameUtils.isSystemWindows()) {//如果 是在windows平台上
return false;
}
File fileInCanonicalDir = null;
if (file.getParent() == null) {
fileInCanonicalDir = file;
} else {
File canonicalDir = file.getParentFile().getCanonicalFile();
fileInCanonicalDir = new File(canonicalDir, file.getName());
}
if (fileInCanonicalDir.getCanonicalFile().equals(fileInCanonicalDir.getAbsoluteFile())) {
return false;
} else {
return true;
}
}
这里判断一个文件是不是Linux下的软连接文件,因为如果是软连接文件,那它的 规范形式指的就是它指向的路径,Java虽可以跨平台,但各种平台下文件格式却是没办法统一的.
ln -s /boot/grub/grub.cfg //软连接 ln -f /boot/grub/grub.cfg //硬连接