最近在研究蓝噪声功率谱图的绘制, 作者是用Java+Matlab进行混合编程的. 每一次改动Java代码以后都需要将.java文件产生的.class文件复制到Matlab工作目录下, 这其实有点繁琐, 于是想到了利用文件的硬链接来减少这些重复繁琐的操作.
直接利用CMD创建即可. PowerShell和CMD使用的是不同指令集. CMD的指令理论上在Win10上也能使用. 在CMD中可以使用mklink指令来创建链接. 直接敲入这个指令可以看到使用帮助信息:
创建符号链接。
MKLINK [[/D] | [/H] | [/J]] Link Target
/D 创建目录符号链接。默认为文件
符号链接。
/H 创建硬链接而非符号链接。
/J 创建目录联接。
Link 指定新的符号链接名称。
Target 指定新链接引用的路径
(相对或绝对)。
回到我的需求来, 直接为编译.java文件产生的.class文件创建硬链接即可, 如下所示:
mklink /H PDDistObj.class E:\WorkSpace\nonuniform-analysis\nonuniform-analysis\matlabcode\src\PDDistObj.class
我对于文件的软链接和硬链接的理解是:
软链接是另一个文件, 作用可以理解为一个指针, 作用在这个文件上的操作除了删除都直接转向实际指向文件, 由于是一个真实的文件所以占用磁盘空间
硬链接可以认为不是一个文件, 它只是实际文件的一个别名, 它的作用是防止真实文件被误操作, 给一个文件建立硬链接后, 他们互为别名, 删除其中任意一个,
这样用rm命令只会删除该别名, 实际文件并不会被删除. 只有链接数为0时, 才会删除原始文件. 参考博客
注记: 如果要硬链接.dll或者.lib这些文件的话, 一般来说库和项目不会处于同一个驱动器, 此时无法使用硬链接, 只能使用/D或者/J来摆脱不同驱动器的限制. 然而, 这种情况下, .exe貌似无法识别创建出来的软链接文件, 这是需要注意的一点.