2

クライアント/サーバー アプリでは、クライアントからサーバーにファイル ( 、 など) を送信する必要があり.txtます.doc。コードを Eclipse で実行すると機能しますが、アプレットの署名付き JAR をエクスポートすると機能しません。をスローしFileNotFoundExceptionます。いくつかの方法でファイルを保存しようとしましたが、成功しませんでした。

public static boolean saveFile(File sourceFile) throws IOException {

    DirectoryChooserDialog dialog = new DirectoryChooserDialog();
    filePath = dialog.getDestinationFolder();
    if (filePath != null) {
        InputStream inputFile = ClassLoader.getSystemResourceAsStream(""+sourceFile);

        filePath += File.separator + sourceFile.getName();

        FileOutputStream outputFile = new FileOutputStream(filePath);

        int byteLetti = 0;
        while ((byteLetti = inputFile.read(buffer)) >= 0) {
            outputFile.write(buffer, 0, byteLetti);
            outputFile.flush();
        }

        inputFile.close();

        outputFile.close();

        return true;
    } else
        return false;
}

使用される代替コード:

FileInputStream inputFile = new FileInputStream(sourceFile);

または

InputStream inputFile = ClassLoader.class.getResourceAsStream(""+sourceFile);

または

InputStream inputFile = FileSaving.class.getResourceAsStream(""+sourceFile);

元のコードとすべての代替コードは Eclipse で機能し、エクスポートすると機能しなくなります。

4

3 に答える 3

1

このコードは、クラスパス上のファイルを探しています。そこにファイルがない場合、FNF がスローされます。Eclipse で作業する場合、ファイルはおそらく src にあるため、bin にコピーされます。getResourceファイルを jar にアーカイブした後、次のいずれかでアクセスできます。getResourceAsStream

InputStream inputFile = this.getClass().getClassLoader().getResourceAsStream(sourceFile.getName())

または URL を使用します。例えば

URL url = new URL("jar:file:/c:/path/to/my.jar!/myfile.txt"); 
JarURLConnection conn = (JarURLConnection)url.openConnection();
InputStream inputFile = conn.getInputStream();
于 2012-08-19T10:16:02.333 に答える
0

リソースを手動で jar にコピーする必要があります。

これを行うには、7zip や winRar などを使用し、右クリックして「アーカイブを開く」を選択します。次に、リソース (png など) を適切なフォルダー (通常はルート) にドラッグ アンド ドロップします。

于 2012-08-19T10:09:08.033 に答える
0

私は怒った後に解決策を見つけました。Windows には、ファイルを開く権限がありませんでした。そのため、管理者権限でブラウザを実行すると機能します。

于 2012-09-06T18:41:28.567 に答える