这段代码来自我使用的一个库,由于错误而我反编译了。
在 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”的意思是“拒绝访问”。
你能帮我理解错误的原因吗?
更新:问题的原因是我在args[2]
.
在具有管理员权限的 Windows 上,它没有崩溃,因为它创建了文件C:\.dcm
,不确定我是否必须考虑该功能或错误。
非常感谢所有回答的人。