我想複製剪貼板中的文件路徑,以便它們可以作爲字符串在文本編輯器中複製,但我希望它們也可用於Finder複製文件。複製到雪豹或以上的文件路徑和url上
我已經寫了下面所示兼容雪豹指南的代碼(例如使用writeObjects當拷貝文件URL)
NSString* path1 = @"/Users/dave/trash/mas.sh";
NSString* path2 = @"/Users/dave/trash/books.xml";
NSURL* url1 = [NSURL fileURLWithPath:path1 isDirectory:NO];
NSURL* url2 = [NSURL fileURLWithPath:path2 isDirectory:NO];
NSArray* paths = [NSArray arrayWithObjects:path1, path2, nil];
NSString* pathPerLine = [paths componentsJoinedByString:@"\n"];
// Put strings on top otherwise paster app receives the url (only the first)
// Urls will be used by Finder for files operations (copy, move)
NSArray* urls = [NSArray arrayWithObjects:pathPerLine, url1, url2, nil];
NSPasteboard* pasteboard = [NSPasteboard generalPasteboard];
[pasteboard clearContents];
[pasteboard writeObjects:urls];
但在某些編輯器(如了XCode)也將網址粘貼如下圖所示( Finder使用正確的網址複製/移動)
/Users/dave/trash/mas.sh
/Users/dave/trash/books.xml
file://localhost/Users/dave/trash/mas.sh
file://localhost/Users/dave/trash/books.xml
我怎麼能只粘貼文件路徑,而無需使用10.6兼容的代碼的文件的URL?
的NSFilenamesPboardType用法似乎氣餒
NSFilenamesPboardType NSString對象指定一個或多個文件名的數組。 在Mac OS X v10.6及更高版本中,使用writeObjects:將文件URL寫入粘貼板。 適用於Mac OS X v10.0及更高版本。 在NSPasteboard.h中聲明。
在10.8只有第一個路徑粘貼,並粘貼有文件://前綴的協議 – dafi 2012-08-21 15:36:37
你的意思與此代碼或在Finder中?我在10.8上,代碼和Finder都粘貼了所有文件名,並且沒有file://前綴。 – 2012-08-21 16:01:56
我運行你的代碼片段(修復了最後一行pathsPerLine中的錯誤pathPerLine),當我粘貼KomodoEdit時,我只在這個表單文件中獲得一個路徑(預期兩個)://localhost/Users/dave/trash/mas.sh ,粘貼到其他應用程序,如TextWranger工作正常 – dafi 2012-08-22 09:35:58