【问题标题】:How do I insert a String variable into a file path?如何将字符串变量插入文件路径?
【发布时间】:2015-10-26 18:12:48
【问题描述】:

我希望能够使用可以在文件路径中更改的变量。与文件路径相关的用户名在构造函数中声明,然后我尝试将其分配给以下方法中的文件路径。

打电话时我想发生的事情:

System.out.format("%s%n", documentsPath.resolve(username +"\\Documents"));

文件路径是否会是:

C:\Users\ryanb\Documents

当我打电话给documentsPath.toString() 时,我只会得到回报:

C:\Users\

如何让documentsPath 变量分配有字符串用户名和最后的"\\Documents"

这是我的代码:

 class profileCopy{

  /*global variables */
  private Path documentsPath;
  private Path desktopPath;
  private Path favoritesPath;
  private Path networkFolder;
  private String username;
  private String foldername;


  public profileCopy(String username, String foldername)
  {
    this.username = username;
    this.foldername = foldername;
    documentsPath = Paths.get("C:\\Users");
    desktopPath = Paths.get("C:\\Users");
    favoritesPath = Paths.get("C:\\Users");
    networkFolder = (Paths.get("F:\\Data\\WP51"));

  }

  public void copyDocumentsFolder() throws IOException
  { 
    Path newDir = Paths.get("C:\\Users\\ryanb\\Documents\\TestCopy");
    System.out.format("%s%n", documentsPath.resolve(username +"\\Documents"));
    System.out.format("%s%n", networkFolder.resolve(foldername + "\\Backup"));
    System.out.println(networkFolder.getFileName());
    Files.move(documentsPath, networkFolder.resolve(documentsPath.getFileName()));
    System.out.println(newDir.toString());   
  }

【问题讨论】:

    标签: java file io path directory


    【解决方案1】:

    您的代码不起作用的要点是您不要将 resolve() 方法的返回值重新分配给路径变量,因为该方法返回一个新对象。

    为了构建你的路径,你可以使用这样的东西:

    documentsPath = Paths.get(string.format("C:\\Users\\%s\\%s", username, "Documents");
    

    如果你想重用一些代码,你可以使用一个文件夹数组并创建它们:

    List<Path> paths = new ArrayList();
    String[] defaultFolders = {"Documents", "Desktop", "Music"};
    foreach (folder : defaultFolders) {
    paths.add(Path.get(string.format("C:\\Users\\%s\\%s", username, folder)));
    

    PS:由于您是在 java 中开发的,您应该考虑使路径的 UNIX 或 Windows 兼容,因为 UNIX 环境不识别“C:/Users”路径。

    【讨论】:

      【解决方案2】:

      解析方法返回一个路径

      public void copyDocumentsFolder() throws IOException
      {
          Path newDir = Paths.get("C:\\Users\\ryanb\\Documents\\TestCopy");
          documentsPath = documentsPath.resolve(username + "\\Documents");
          networkFolder = networkFolder.resolve(foldername + "\\Backup");
          System.out.format("%s%n", documentsPath);
          System.out.format("%s%n", networkFolder);
          System.out.println(networkFolder.getFileName());
          Files.move(documentsPath, networkFolder.resolve(documentsPath.getFileName()));
          System.out.println(newDir.toString());
      }
      

      【讨论】:

      • 澄清一下,documentsPath.resolve(...) 返回一个新的Path 对象,而原始对象保持不变。它不会修改调用该方法的对象。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 2018-05-02
      • 2013-05-18
      • 2017-03-18
      • 1970-01-01
      相关资源
      最近更新 更多