• ベストアンサー

クリップボードからファイル名を取得

クリップボードについて教えていただきたいと思います。 コピーを行うとクリップボードにはコピーした内容が保存されます。 そのコピーを行った内容のファイル名(できればstring型で)を取得する方法を教えていただけたらと思います。 文字列・保存されていない画像の場合にはファイル名は存在しないので、ファイル名の存在する画像やファイルについての方法をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • isle
  • ベストアンサー率51% (77/150)
回答No.2

クリップボードのデータはファイルとは無関係なので、ファイル名はありません。 データをファイルに保存するのはアプリケーションプログラムの役割なので、 そのアプリケーションプログラムにファイル名を文字列としてクリップボードに転送する機能を実装するとか、 アプリケーションプログラムから直接ファイル名を得る方法を考えましょう。

t048
質問者

お礼

回答ありがとうございます。 ファイル名は存在しないんですか。。 残念です。 また新たに質問したいのですが、クリップボードにはどのようなデータあるのですか?

その他の回答 (3)

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.4

> クリップボードにはどのようなデータがあるのですか? それは、あなたが最初の質問に書いておられるとおりです。

t048
質問者

お礼

ありがとうございました。

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.3

はぁ、コードを見てわかりました。 isleさんのおっしゃるとおり、クリップボードにデータを入れる側のコードで特殊なことをしないかぎり、ファイル名が得られることはありえませんね。 その特殊なデータを解析する側も、けっこう面倒でしょう。 data transfer以外の、もっとふつうの方法で名前を通信したほうが、だんぜん楽でしょうね。

t048
質問者

お礼

わかりました! ありがとうございます。 isleさんにも質問したのですが、_ranco_さんも答えていただけたら幸いです。 クリップボードにはどのようなデータがあるのですか? 無知で申し訳ありません。

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.1

なにをやりたいのか、小さなプログラム(ないし、プログラムの一部分)で示していただけませんか?

t048
質問者

補足

読んでいただきありがとうございます。 以下が行いたいプログラムです。 クリップボードが文字列であればその文字列を出力し、それ以外なら「文字列ではありません」と出力するというものです。 その、文字列でない時にファイル名を取得して出力したいと考えています。 読みにくいと思いますが、よろしくお願いします。 import java.awt.*; import java.awt.datatransfer.*; public class Frame extends Component implements ClipboardOwner { Clipboard clip = getToolkit().getSystemClipboard(); Transferable data; public void read(){ data = clip.getContents(this); if(data.isDataFlavorSupported(DataFlavor.stringFlavor)){ try{ System.out.println((String)data.getTransferData(DataFlavor.stringFlavor)); } catch(Exception e) {} }else{ System.out.println("<文字列ではありません>"); } } public void lostOwnership(Clipboard clipboard, Transferable contents) { System.out.println("クリップボードが失われました"); } public static void main(String[] args){ Frame fr = new Frame(); fr.read(); } }