2016-01-07 14 views
6

mam ten kodprzekonwertować plik [], aby String [] w Javie

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

kod ten zwraca tablicę lokalizacji wszystkich plików w folderze F: \ dziewczęta, a ja starałem się wykorzystać tę lokalizację w selen Kod

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

i widzę błędy

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

więc myślę, że mam do konwersji listOfFiles [] do tablicy ciągów, plz powiedz mi Simpl e sposób to zrobić. Dzięki

+0

co chcesz wysłać do Selenium? Ścieżka pliku lub zawartości pliku? listOfFiles [] -> String [] jest niejasny, dopóki nie wiemy, co próbujesz osiągnąć. – dubes

+0

Chcę przesłać plik, aby przesłać plik Muszę wysłać plik – carol

Odpowiedz

11

Nie musisz konwertować całej tablicy. Wystarczy zadzwonić File „s getAbsolutePath() metoda:

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

Ale jeśli chcesz przekonwertować cały wachlarz, tutaj jest Javy 8 sposób to zrobić (uproszczony przez @RemigiusStalder):

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

Kod Java8 można uprościć do: 'String listOfPaths [] = Arrays.stream (listOfFiles) .map (File :: getAbsolutePath) .toArray (String []: : new); ' –

3

myślę, że nie trzeba przekonwertować plik [], aby string []

Wystarczy użyć macierzy plik w ten sposób:

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

lub, jeśli chcesz wysłać pełną ścieżkę dostępu do pliku:

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

Dlaczego nie spróbować tego?

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

Bo to by nie działało. – EJP

+0

dlaczego to nie zadziałałoby? Myślę, że powinno działać – carol

2

Jeśli chcesz tylko nazwy:

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

Jeśli potrzebujesz pełnej ścieżki:

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

inny sposób: jest to po prostu metoda statyczna pomocnika do konwertowania tablicę Plik do String array:

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; 
    } 
7

Just zadzwoń pod numer File.list().

+0

@ ThiagoPorciúncula Tak będzie "listFiles()". Jedyna różnica polega na tym, jaki typ danych jest zwracany. – EJP

+0

@ ThiagoPorciúncula Mogę tylko zasugerować ci dalsze czytanie: ['zwracana jest tablica obiektów File, po jednym dla każdego pliku * lub katalogu * w katalogu'] (https://docs.oracle.com/javase/7/docs /api/java/io/File.html#listFiles()) [wyróżnienia dodane]. – EJP

Powiązane problemy