2016-01-07 12 views
6

में मैं इस कोडConvert फ़ाइल [] को String [] जावा

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

इस कोड को फ़ोल्डर एफ में सभी फ़ाइलों के स्थानों की एक सरणी देता है: \ लड़कियों को, और मैं सेलेनियम में इस स्थान का उपयोग करने की कोशिश की कोड

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

और मैं देख त्रुटियों

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

इसलिए मुझे लगता है कि मैं स्ट्रिंग सरणी listOfFiles [] परिवर्तित करने के लिए है, plz मुझे simpl बता ऐसा करने के लिए रास्ता। धन्यवाद

+0

आप सेलेनियम को क्या भेजना चाहते हैं? फ़ाइल या फ़ाइल सामग्री का पथ? listOfFiles [] -> स्ट्रिंग [] अस्पष्ट है जब तक हम नहीं जानते कि आप क्या हासिल करने की कोशिश कर रहे हैं। – dubes

+0

मैं फ़ाइल अपलोड करने के लिए फ़ाइल अपलोड करना चाहता हूं, मुझे फ़ाइलपैथ – carol

उत्तर

11

आपको पूरे सरणी को बदलने की आवश्यकता नहीं है। बस फोन File के getAbsolutePath() विधि:

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

भेजना है जावा 8 कोड को सरलीकृत किया जा सकता है: 'स्ट्रिंग सूचीऑफपाथ्स [] = Arrays.stream (listOfFiles) .map (फ़ाइल :: getAbsolutePath) .toArray (स्ट्रिंग []: : नया); ' –

3
:

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

लेकिन अगर आप पूरे सरणी में कनवर्ट करना चाहते हैं, यहाँ जावा 8 तरीका यह है (@RemigiusStalder द्वारा सरलीकृत) है

:

मुझे लगता है, आप []

बस अपने फ़ाइल सरणी इस तरह का उपयोग स्ट्रिंग के लिए फ़ाइल [] परिवर्तित करने के लिए की जरूरत नहीं है

या, यदि आप पूर्ण फ़ाइल पथ भेजना चाहते हैं:

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 काम करना चाहिए तो सूची सूची() '। एकमात्र अंतर यह है कि डेटाटाइप क्या लौटाया जाता है। – EJP

+0

@ ThiagoPorciúncula मैं केवल सुझाव दे सकता हूं कि आप पढ़ते रहें: ['फ़ाइल ऑब्जेक्ट्स की एक सरणी लौटा दी जाती है, प्रत्येक फ़ाइल के लिए एक * या निर्देशिका * निर्देशिका में]] (https://docs.oracle.com/javase/7/docs /api/java/io/File.html#listFiles()) [जोर जोड़ा गया]। – EJP