从Java中,我将一个可执行文件解压到使用file.createTempfile()指定的位置。 当我尝试运行我的可执行文件时,我的程序在尝试读取第一行输出时挂起。
我发现,如果我尝试从另一个程序运行相同的解压缩的可执行文件,它将工作,如果我指定目录为C: documents和Settings 用户名 Local Settings Temp prog.exe。 但是,如果我指定目录为C: DOCUME〜1 USERNA〜1 LOCALS〜1 Temp prog.exe我得到挂起。
有没有办法在我的程序unmangle代字号文件名,所以我可以指定一个目录名称,将工作?
(因为我总是喜欢解决语言和APIdevise问题,所以为什么Java file.createTempfile()和java.io.tmpdir必须评估为损坏的文件名?)
强制丢包
在nm命令的输出中,“@@”符号是什么意思?
在linux上篡改C ++名称时,什么是符号?
防止在C(不是C ++)中使用MinGW进行名称修改以进行dynamic符号search
如何在linux中使用Google Protobufs来确保相同的输出文件(* .o)
如何从装饰名称中取消名字?
您可以使用getCanonicalPath()来获取展开的路径。 例如:
try { file file = file.createTempfile("abc",null); System.out.println(file.getPath()); System.out.println(file.getCanonicalPath()); } catch (IOException e) {}
生产…
C:DOCUME~1USERNA~1LOCALS~1Tempabc49634.tmp C:documents and SettingsusernameLocal Settingstempabc49634.tmp
我在XP上测试了这个,但是假设它在其他的windows *** 作系统上也是一样的。
请参阅@ raviaw对第二个问题的回答。
哇,我从来没有见过。 事实是,环境变量%TEMP%返回一个错位的名字(这是从我的电脑):
TEMP = C: DOCUME〜1 raviw LOCALS〜1个温度
TMP = C: DOCUME〜1 raviw LOCALS〜1个温度
假设一个新创建的Java虚拟机使用环境变量来获取临时文件夹的位置,这不是虚拟机的错误,目录即将被损坏。
即使您尝试使用System.getenv()来获取临时文件夹,您仍然会遇到同样的问题。
我会确保:
问题不是由于你有一个名为“prog.exe”的目录(基于你的问题,我假设这一点)造成的。
如果该文件是“prog.exe”,如果它没有被其他程序使用(可能是杀毒软件)。
检查您的计算机是否理智(对于任何不是Web应用程序的应用程序来说,这将是一个非常严重的错误,并且需要临时文件)。
总结以上是内存溢出为你收集整理的如何在Java中取消Windows文件名的转换?全部内容,希望文章能够帮你解决如何在Java中取消Windows文件名的转换?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)