1

この方法を考えると:

public void OutputWrite (BigInteger[] EncryptCodes) throws FileNotFoundException{

    JFileChooser chooser = new JFileChooser();

    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);  
    chooser.showSaveDialog(null);

    String path = chooser.getSelectedFile().getAbsolutePath();

    PrintWriter file = new PrintWriter(new File(path+"EncryptedMessage.txt"));

    for (int i = 0; i <EncryptCodes.length; i++) { 
        file.write(EncryptCodes[i]+ " \r\n");     
    }
    file.close();
}

このメソッドは、変数名を無視して、EncryptCodesというプロジェクト フォルダー内に生成された txt ファイルにデータを書き込みますEncryptedMessage.txt

私が必要としているのは、実行中にユーザーが指定した場所に保存するために、そのtxtファイルをプロジェクトフォルダーではなく保存する方法です(名前を付けて保存ダイアログボックスを開きます)。JFilechooserでできると思いますが、うまくいきません。

4

2 に答える 2

5

次のように、保存場所を取得するための別のメソッドを追加できます。

private File getSaveLocation() {
   JFileChooser chooser = new JFileChooser();
   chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);  
   int result = chooser.showSaveDialog(this);

   if (result == chooser.APPROVE_OPTION) { 
      return chooser.getSelectedFile();
   } else {
      return null;
   }
}

File次に、親/ディレクトリ引数を取るオーバーロードされたコンストラクターへの引数として結果を使用します。

public void writeOutput(File saveLocation, BigInteger[] EncryptCodes)
                 throws FileNotFoundException {

   PrintWriter file = 
        new PrintWriter(new File(saveLocation, "EncryptedMessage.txt"));
   ...
}
于 2012-12-16T21:07:52.060 に答える
0

このような?

PrintWriter file = new PrintWriter(new File(filePathChosenByUser + "EncryptedMessage.txt"));
于 2012-12-16T20:47:09.283 に答える