私はJavaの初心者で、デスクトップアプリケーションの問題に直面しています。データを書き込んで「data.txt」として出力し(ファイルを固定の場所に書き込まないことを意味します)、ユーザーにこのファイルをダウンロードさせる必要があります。私はインターネットでたくさん検索しましたが、適切な解決策はありませんでした。すべての提案を歓迎します。
注 : NetBeans IDE 7.0.1 を使用しています
私はJavaの初心者で、デスクトップアプリケーションの問題に直面しています。データを書き込んで「data.txt」として出力し(ファイルを固定の場所に書き込まないことを意味します)、ユーザーにこのファイルをダウンロードさせる必要があります。私はインターネットでたくさん検索しましたが、適切な解決策はありませんでした。すべての提案を歓迎します。
注 : NetBeans IDE 7.0.1 を使用しています
データをストリームに保存し、FileChooser ダイアログを表示して、ユーザーがファイルの保存先を決定できるようにします。次に、ストリームを選択したファイルに書き込みます。
ファイルチューザーの詳細については、http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html を参照してください。
サーバー上でファイルを作成したら、クライアントに画像ファイルを送信するために行ったのと同様のことを行うことができます(私の場合はそうですJSP
が、クライアントがどこにあるかは実際には関係ありません)。
/**
* Writes file with a given path to the response.
* @param pathToFile
* @param response
* @throws IOException if there was some problem writing the file.
*/
public static void writeFile(String pathToFile, ServletResponse response) throws IOException {
try(InputStream is = new FileInputStream(pathToFile);
OutputStream out = new Base64OutputStream(response.getOutputStream());){
IOUtils.copy(is, out);
}
}
それらはそれが使用するインポートです:
import org.apache.commons.codec.binary.Base64OutputStream;
import org.apache.commons.io.IOUtils;
クライアント(デスクトップアプリ内)では、同じIOUtilsを使用してBase64からデコードし、必要な場所に保存できます。このビットについては、実際には@Mattenが適切なソリューション(+1)を提供します。
私は例を持っていますJFileChooser
が、申し訳ありませんが、ダウンロードのことについてあなたの主張をまだ理解していません.
BufferedOutputStream buff = null;
BufferedReader reader = null;
JFileChooser fileChooser;
File file;
fileChooser.showSaveDialog(this);
file = new File(fileChooser.getSelectedFile().toString());
file.createNewFile();
reader = new BufferedReader(new StringReader("String text"));
buff = new BufferedOutputStream(new FileOutputStream(file));
String str;
while ((str = reader.readLine()) != null) {
buff.write(str.getBytes());
buff.write("\r\n".getBytes());
}