【问题标题】:Convert File[] to String[] in Java在 Java 中将 File[] 转换为 String[]
【发布时间】:2016-04-11 16:30:34
【问题描述】:

我有这个代码

File folder = new File("F:\\gals");
File[] listOfFiles = folder.listFiles();  

此代码返回文件夹 F:\gals 中所有文件的位置数组,我尝试在 selenium 代码中使用此位置

driver.findElement(By.id(id1)).sendKeys(listOfFiles[1]);

我看到了错误

The method sendKeys(CharSequence...) in the type WebElement is not applicable for the arguments (File)

所以我想我必须将 listOfFiles[] 转换为字符串数组,请告诉我简单的方法来做到这一点。谢谢

【问题讨论】:

  • 你想向 Selenium 发送什么?文件路径还是文件内容? listOfFiles[] --> String[] 在我们知道你想要达到的目标之前是不清楚的。
  • 我要上传文件,要上传文件我必须发送文件路径

标签: java arrays string file selenium


【解决方案1】:

您不需要转换整个数组。只需调用FilegetAbsolutePath() 方法:

driver.findElement(By.id(id1)).sendKeys(listOfFiles[1].getAbsolutePath());

但如果您确实想转换整个数组,这里是 Java 8 方法(由@RemigiusStalder 简化):

String listOfPaths[] = Arrays.stream(listOfFiles).map(File::getAbsolutePath)
        .toArray(String[]::new);

【讨论】:

  • Java8 代码可以简化为:String listOfPaths[] = Arrays.stream(listOfFiles).map(File::getAbsolutePath).toArray(String[]::new);
【解决方案2】:

只需致电File.list()

【讨论】:

【解决方案3】:

我认为,您不需要将 File[] 转换为 String[]

这样使用你的文件数组:

driver.findElement(By.id(id1)).sendKeys(listOfFiles[1].getName());

或者,如果您想发送完整的文件路径:

driver.findElement(By.id(id1)).sendKeys(listOfFiles[1].getPath());

【讨论】:

    【解决方案4】:

    如果你只想要名字:

    String [] fileNames new String[listOfFiles.length];
      for (int i = 0; i < listOfFiles.length; i++) {
        fileNames[i] = listOfFiles[i].getName();
    }
    

    如果需要完整路径:

    String [] fileNames new String[listOfFiles.length];
      for (int i = 0; i < listOfFiles.length; i++) {
        fileNames[i] = listOfFiles[i].getPath();
    }
    

    【讨论】:

      【解决方案5】:

      另一种方式:这只是将文件数组转换为字符串数组的静态辅助方法:

       private static String[] convertFromFilesArray(File[] files){
              String[] result = new String[files.length];
              for (int i = 0; i<files.length; i++){
                  result[i] = files[i].getAbsolutePath();
              }
      
              return result;
          }
      

      【讨论】:

        【解决方案6】:

        你为什么不能试试这个?

        driver.findElement(By.id(id1)).sendKeys(listOfFiles[1].getName());
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-09-15
          • 2021-07-25
          • 2011-02-02
          • 2020-06-10
          相关资源
          最近更新 更多