2013-10-25 46 views
0
public static void moveSQLite(){ 
     File source = new File("C:\\Users\\520\\Desktop\\System.Data.SQLite"); // Specify initial path 
     File target = new File("C:\\Windows\\Microsoft.NET\\assembly\\GAC_64"); // Desired path 

     // If the source location exists, delete the any old source files 
     // and copy the entire directory of the source to the target location 
     if(source.exists()){ 
      System.out.println("Installing SQLite Database."); 
      try { 
       FileUtils.deleteDirectory(target); 
       System.out.println("Deleting previous versions of System.Data.SQLite"); 
       System.out.println("\"" + source + "\"" + " was successfully" 
         + " copied to " + "\"" + target + "\""); 
       FileUtils.copyDirectory(source, target); 
       System.out.println("SQLite database has been installed."); 
      }catch (IOException e) { 
       e.printStackTrace(); 
      } 
     // Otherwise prompt the user that the source directory does not exist 
     }else{ 
      System.out.println("SQLite not found - are you sure you have it in the right directory?"); 
     } 
    } 

以上是從我的安裝程序使用的許多方法中的一種(這基本上拖放在用戶的計算機上的文件的具體位置)的摘錄。在命令行中,或者最好在用戶界面中,我想讓用戶輸入他們的「源」目錄,也就是說,在這種情況下,我的「用戶」目錄是520,但對於其他用戶,它可能是不同。我可以用asterix替換它,允許Windows找出目錄本身,還是必須將目錄硬編碼?任何擁有軟件開發經驗的人都請輸入您的答案 - 謝謝。允許用戶輸入自己的「用戶」目錄到一個.jar安裝

回答

1

我可以用asterix取代它,允許Windows自己找出 目錄本身,還是必須對目錄進行硬編碼?

如果你想要的任何系統制定出自己的用戶目錄(而不僅僅是Windows,但任何系統),可以使用

String homeDirectory=System.getProperty("user.home"); 

然後,您可以將用戶的主目錄內創建自己的filestructure但是要小心使用"foo\bar",因爲「\」不是通用的,並且不適用於所有系統。但是,Java來救援再次annother系統屬性

String PATHSEPERATOR=System.getProperty("file.separator"); 

然後使用像:

homeDirectory=homeDirectory+"foo"+PATHSEPERATOR+"bar"; 

然後,您可以用它來創建File對象

File homeDirectoryAsFile = new File(homeDirectory); 
+0

'user.home'例如,「520」在哪裏?我能夠進一步指定目錄,例如'520 \ foo \ bar'嗎? – theGreenCabbage

+0

@theGreenCabbage我有點困惑,你想讓系統找出用戶的工作目錄和用戶在用戶目錄中輸入一些文件結構嗎? –

+0

由於path的類型實際上是'Path',並且getProprty()的輸出似乎是'String',是不是一個問題? – theGreenCabbage

相關問題