0

ユーザーが自動ログインオプションを選択するたびにオプションが必要です...私のプログラムはフォルダーを作成し、その中にファイルを保存します...プログラムが起動すると、フォルダーとその中のファイルを探します。問題は、netbeans 経由でコードを実行すると完全に実行されますが、jar 経由で実行するとフォルダーが見つからないことです。実行時にフォルダーを作成してアクセスするための最良の方法は何ですか。ダウンは私のファイル書き込みコードです...

private void writeSerializableUserObject(boolean isAutoLogin , boolean isAutoRemember){
    SerializableUser serializeUserObj = new SerializableUser();
    serializeUserObj.setUserEmail(TempSessionUser.getTempUser().getEmail());
    serializeUserObj.setUserPassword(TempSessionUser.getTempUser().getPassword());
    serializeUserObj.setUserName(TempSessionUser.getTempUser().getF_name());
    serializeUserObj.setIsAutoLogin(isAutoLogin);
    if(isAutoRemember){
        serializeUserObj.setIsAutoRemember(true);
    }
    System.out.println("in side method.......");

編集

    String path = System.getProperty("user.home");
    File file = new File(path+"/user.ser");
    if(!file.exists()){
          file.mkdir();
    }
    try {
        FileOutputStream fileOutPut = new FileOutputStream(file);
        ObjectOutputStream oos;
        try {
            oos = new ObjectOutputStream(fileOutPut);
            oos.writeObject(serializeUserObj);
            oos.flush();
            oos.close();
        } catch (IOException ex) {
            Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
        }//Inner catch statment end

    } catch (FileNotFoundException ex) {
        Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
    }//Outer Catch statment end
}

編集後、この例外が発生します... netbeans の実行内で、HaseebAimal までが私のホーム ディレクトリ パスです。

    java.io.FileNotFoundException: C:\Users\HaseebAimal\UserData\user.ser (Access is denied)

    at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:194)
at java.io.FileOutputStream.<init>(FileOutputStream.java:145)
4

2 に答える 2

2

getClass().getResource("/UserData")クラスパス内の場所を示します。これは、(通常は)ファイルシステム内のディレクトリではない場合があります。代わりに、おそらく次の1つ以上を選択する必要があります。

  • ユーザーに保存場所の入力を求めます。
  • ユーザーのホームディレクトリにあるファイルまたはフォルダのデフォルトの場所を使用します。これは、で取得できますSystem.getProperty("user.home")
  • で取得できる現在の作業ディレクトリに保存しますSystem.getProperty("user.dir")

アプリのインストールを何らかの方法で処理したために作業ディレクトリが常に何であるかを知らない限り、最後のオプションはおそらく最悪です。

于 2013-03-03T23:11:56.507 に答える
0

作成する前に、何をFileOutputStreamして何file.canRead()file.canWrite()返すかを確認してください。

アプリケーションがその場所に書き込めることを確認する必要があります。その場所へのアクセス権がない場合は、ディレクトリを書き込みアクセス権のある別の場所に変更してみてください。

何かのようなもの:

String path = "D:/test";
于 2013-03-03T23:46:56.997 に答える