2016-01-07 5 views
6

に私はこのコードファイルの変換には、[]のJava

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

このコードは、フォルダF内のすべてのファイルの場所の配列を返すがありますコード

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

と私はエラーが

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

ので、私はplzは私にSIMPLを教え、私は文字列の配列に[] listOfFilesを変換するために持っていると思うご覧くださいこれを行う方法。ありがとう

+0

セレンに何を送信しますか?ファイルのパスまたはファイルの内容? listOfFiles [] - > String []は、達成しようとしていることが分かるまではっきりしていません。 '文字列listOfPaths [] = Arrays.stream(listOfFiles).MAP(ファイル:: getAbsolutePath).toArray(String []型::私はファイルパス – dubes

+0

は、のように簡略化することができ:new); ' – carol

答えて

11

アレイ全体を変換する必要はありません。ただ、FileさんgetAbsolutePath()メソッドを呼び出す:あなたは配列全体を変換したいならば

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

をしかし、ここで(@RemigiusStalderによって単純化)これを行うにはのJava 8方法は次のとおりです。

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

Java8コードを送信する必要がファイルをアップロードするには、ファイルをアップロードしたい –

3

私が思うに、あなたは[]

はちょうどあなたのファイル配列この方法を使用して文字列にファイル[]を変換する必要はありません

か、あなたは完全なファイルパスを送りたい場合:

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

は、なぜあなたはこれを試すことができませんか?

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

これはうまくいかないためです。 – EJP

+0

なぜ機能しないのですか?私はそれが動作するはずだと思う – carol

2

あなただけの名前をしたい場合:

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

別の方法:あなたが完全なパスが必要な場合は

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

を、これは単なる文字列にファイルの配列を変換するための静的ヘルパーメソッドです配列:

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

代わりにFile.list()に電話してください。

+0

@ThiagoPorciúncula 'listFiles()'でしょう。唯一の違いは、返されるデータ型です。 – EJP

+0

@ThiagoPorciúncula['Fileオブジェクトの配列が返されます。ディレクトリ内の各ファイル*またはディレクトリ*に1つずつ]'(https://docs.oracle.com/javase/7/docs) /api/java/io/File.html#listFiles())[強調が追加されました]。 – EJP

関連する問題