Этот код из библиотеки, которую я использую, и я декомпилировал из-за ошибки.Когда этот код падает?
В 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)
Где "комплек negato" означает "Access Denied".
Помогите мне понять причину ошибки?
UPDATE: Причина проблемы заключалась в том, что я проезжал пустую строку в args[2]
.
В Windows с правами администратора он не разбился, потому что он создал файл C:\.dcm
, не уверен, что мне нужно учитывать эту функцию или ошибку.
Благодарим всех, кто ответил.
Grazie mille Paolo! Я просто передавал пустую строку этому параметру. –