このコードは、私が使用しているライブラリのもので、エラーのために逆コンパイルしました。このコードはいついつクラッシュするのですか?
Windows 32では、プログラムを起動するユーザーがマシンの管理者である場合は正しく動作します。そうでない場合は、クラッシュします。 Linuxでもクラッシュします。
/* */ public static String cambiaEstensione(String nomeFile, String nuovaEstensione)
/* */ {
/* 140 */ int p = nomeFile.lastIndexOf('.');
/* 141 */ if (p < 0) {
/* 142 */ return nomeFile + "." + nuovaEstensione;
/* */ }
/* 144 */ return nomeFile.substring(0, p) + "." + nuovaEstensione;
/* */ }
関数の呼び出し元がこれです:
/* 182 */ if (this.fl_scrivi) {
/* 183 */ stato = "Apertura archivio dichiarazioni da inviare...";
/* 184 */ this.dcm = new Dcm();
/* 185 */ this.dcm.setNomeDcm(Util.cambiaEstensione(args[2], "dcm"));
/* 186 */ this.dcm.setFileDcm(new FileOutputStream(this.dcm.getNomeDcm()));
/* */ }
例外は次のとおりです。
java.io.FileNotFoundException: .dcm (Accesso negato)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at it.finanze.entrate.sco.main.M77S11.elaboraFile(M77S11.java:186)
"Accesso negato"は意味"アクセスが拒否されましたを"。
エラーの原因を理解できたら助かりますか?
UPDATE:問題の理由は、私はargs[2]
に空の文字列を渡したということでした。
アドミニストレーター特権を持つWindowsでは、ファイルC:\.dcm
が作成されたためクラッシュしませんでしたが、機能やバグを考慮する必要があるかどうかはわかりません。
お返事いただいた皆様、本当にありがとうございます。
グラツィエミルパオロ!私はそのパラメータに空の文字列を渡すだけでした。 –