2017-02-03 10 views
0

最近のアイテムにはいくつかのフォルダやファイルがあります。最近のアイテムに存在する.lnkショートカットのすべてのファイル/フォルダの実際のパスを知りたいと思っています。このような結果。 ローカルパス:C:\プログラムファイル(x86の)\ Windows Liveの\メール\.lnkファイルに関するメタデータを管理しています

私のコードは

/* 
* 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()))); 


     } 

    } 


} 

答えて

0

を与えているwlmail.exeは、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を通じてショートカットにアクセスします。このショートカットは、ダブルクリックすると同じ結果になります。したがって、1つのリンクが壊れた場合、Windowsはファイルの現在の場所を参照するか、壊れたリンクを削除するかを尋ねるポップアップメッセージを表示します。これはあなたのために働くはずの「すばらしい&」の解決策です。より洗練されたコードをご希望の場合は、この回答をご覧ください。

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

関連する問題