我想对某个已经存在的文件进行操作,比如希望运行某exe文件,如何操作呢?
 找不到此文件的绝对路径;
考虑到文件的可移植性,希望能够在本地系统中返回文件的绝对路径,我试了
 String filePath=file.getAbsolutePath();
但是此命令输出的是当前运行文件的路径,而不能输出指定文件的路径。
我是新手,请大家指教!小女不胜感激!

解决方案 »

  1.   

    没看懂
    1 你要运行某个文件
    2 可是你不知道那个文件在哪?
    3 我们该怎么做?是这样吗?我一般是搜索整个计算机硬盘,找到文件名相同的,逐个看。程序也是这样的啊。
    考虑到文件的可移植性,希望能够在本地系统中返回文件的绝对路径????那就更应该用相对路径了,否则在windows下面是不支持 "/1234/5678/9.gif" 的
      

  2.   

    比如,我想通过编制一个界面上的按钮,启动电脑上安装的QQ
    但是如果程序在别人的电脑上运行,就需要知道此电脑的QQ的路径吧。我该如何处理这个问题呢?
    或者说不用知道路径?还有别的方式可以实现吗?相对路径怎么实现呢?能不能请高手贴一些代码,学习一下!感谢ing!
      

  3.   

    1 查找环境里面是否有,也就是路径里面PATH
    2 查找注册表,比如QQ,他会放好多垃圾到注册表的
    3 到程序的默认目录,多数用户不会改目录,顶多c: 改成 d:
    4 所有硬盘搜吧。呵呵!你想啊,人都不知道他在哪里,程序就更不知道了。 还不是挨个打开看看!
      

  4.   

    JDK有个Preferences类,可以操作注册表,你可以试试
      

  5.   

    非常感谢大家回帖,让我学习java的尽头更加足了!呵呵!
    感谢
       老紫竹
    1  我通过访问环境变量的方式进行解决了!用了System.getenv()方法。  
       刚好我的工程软件在环境变量中存在变量。
       我查了一下,在注册表中没有找到软件的信息,肯定是有的,但是我愚钝,没找着,请大家指教方法!2  但是如果有的执行文件在环境变量中不存在变量,那肯定需要像
       tanlingyun 
       讲的那样操作注册表了吧!
        不会操作,还请大家指教,等待tanlingyun的代码ing···
    3  分析老紫竹的第三种方法,觉得很难实现,没有头绪,大海捞针似的,如果有代码,希望可以指教!
      

  6.   

    你先把registry-3.1.3下载下来,它是一个开源包吧,用到了JNI,地址如下:http://www.gjt.org/download/time/java/jnireg/registry-3.1.3.zip
    下载完后解压,在bin那个目录里有ICE_JNIRegistry.dll和registry.jar,这就是我们想要的,然后把registry.jar抽取出来,可以用jar命令也可以直接用WinRAR解压,解压出来是com.ice.jni.registry包。
    下面建一个文件夹registry(主要是为了把这些东西放在一起好管理),把刚才解压出来的com文件夹和ICE_JNIRegistry.dll放在里面,然后新建一java文件,我这里叫RegeditTest,源代码如下:import com.ice.jni.registry.*;public class RegeditTest 
    {
        public static void main(String[] str) 
        {
            try 
            {
                  RegistryKey child = Registry.HKEY_LOCAL_MACHINE.openSubKey("SOFTWARE\\Tencent\\QQ");
                  String subKeyValue = child.getStringValue("install");
                  Runtime.getRuntime().exec(subKeyValue+"qq.exe");
                  System.out.println(subKeyValue);
            } 
            catch (Exception e) 
            {
                  e.printStackTrace();
            }
        }
    }编译运行就可以得到QQ路径并启动了。你可以按照这个思路,把它加到你自己的代码中!!还有就是用到的这些类比如RegistryKey是有源代码的,它里面有很多方法,不光可以读取注册表,还可以写入注册表,不过没有帮助文档,得看源代码才知道这些方法。哦,忘了,要是注册表有中文字符的话读出来是乱码、写进去也是,这个我找了好多,还是没解决,换了几种编码也不行,抱歉!!!我的叙述有点混乱,你不懂再跟贴吧。
      

  7.   

    谢谢 tianlingyun,非常感谢!