管理有关.lnk文件的元数据

时间:2017-02-03 21:46:26

标签: java

我在Windows的最近项目中有一些文件夹/文件。我想要做的是我想知道最近项目中存在的.lnk快捷方式的所有文件/文件夹的真实路径。我想要这样的结果。 本地路径:C:\ Program Files(x86)\ Windows Live \ Mail \ wlmail.exe

我的代码是

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package sir.aimal;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributeView;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.FileTime;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *
 * @author zeeshan
 */
public class SirAimal 
{


    public static void main(String[] args) throws IOException
    {
        String user=System.getProperty("user.name");
        String path="C:\\Users\\"+user+"\\AppData\\Roaming\\Microsoft\\Windows\\Recent\\";

        File directory = new File(path);
        File[] fList = directory.listFiles();

        for (int i=0;i<fList.length;i++)
        {
            String filename=fList[i].getName();
            String actualfilename=filename.replace(".lnk", "");

            Path p = Paths.get(path+filename);


            BasicFileAttributes view= Files.getFileAttributeView(p, BasicFileAttributeView.class).readAttributes();
            FileTime fileTime=view.creationTime();
            System.out.println(actualfilename+"\t\t"+new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format((fileTime.toMillis())));


        }

    }


}

1 个答案:

答案 0 :(得分:0)

在for循环中尝试:

ShellFolder sf = ShellFolder.getShellFolder(flist[i]);
ShellFolder target = sf.getLinkLocation();
if (target != null) {
    System.out.println(target.getAbsolutePath());
}

以下是该课程的一些文档:

http://srcrr.com/java/oracle/openjdk/6/reference/sun/awt/shell/ShellFolder.html

请注意:此方法将通过Windows API访问快捷方式,这与双击时的结果相同。因此,对于每个单独的断开链接,Windows将向您显示一条弹出消息,要求您浏览到该文件的当前位置或删除损坏的链接。这是&#39;快速&amp;讨厌的&#39;解决方案,应该适合你。如果您想要更复杂的代码,请查看以下答案:

https://stackoverflow.com/a/9403438/3830952