2016-06-29 24 views
1

私のプログラムでは、ソケットプログラミングを使ってクライアントからサーバーにいくつかのファイルを送りたいと思っています。私はvoid setMultiSelectionEnabled(boolean b)メソッドを使用しているので、1つ以上のファイルを選択できますが、ファイルのパスを取得しようとするとエラーが表示されます。ここに私のコードは次のとおりです。jfilechooserで選択したファイルのパスを取得するにはどうすればよいですか?

JFileChooser choose = new JFileChooser(); 

    choose.setAcceptAllFileFilterUsed(false); 
    choose.addChoosableFileFilter(new FileNameExtensionFilter("Images", "jpg", "png", "jpeg")); 
    choose.setAcceptAllFileFilterUsed(true); 
    choose.setMultiSelectionEnabled(true); 
    File[] f = choose.getSelectedFiles(); 
    choose.showOpenDialog(this); 

    String filePath = f.getAbsolutePath(); 
    String fname = f.getName(); 

    Client_ftp cli = new Client_ftp(); 
    if(cli.kirim(filePath, fname)) { 
     jLabel1.setText("Success. ."); 
    } else { 
     jLabel1.setText("failed"); 
    } 

答えて

0

f.getSelectedFile()getAbsolutePath()

だから、いくつかの説明を追加するには、[編集]:

あなたはファイルチューの絶対パスを取得することはできません..あなたは、選択したファイルのパスを取得するには、getSelectedFile(s)()メソッドを使用する必要があります。私はそれがあなたを助けたといいね:)

1

fは配列です。 fの各Fileに対してgetAbsolutePath()メソッドを呼び出す前に、配列のインデックスを作成する必要があります。そうする前にヌルを確認してください。

例:f [0] .getAbsolutePath();

+0

ありがとうございます。それは動作しますが、私が選択したファイルは送信されません。 –

関連する問題