2012-04-30 12 views
37

फ़ाइल को मौजूद नहीं होने पर मुझे अपना कोड पढ़ने की आवश्यकता है और अन्य संलग्न करें। अभी यह पढ़ रहा है अगर यह अस्तित्व में है और संलग्न है। यहां कोड है:फ़ाइल बनाएं अगर फ़ाइल मौजूद नहीं है

if (File.Exists(path)) 
{ 
    using (StreamWriter sw = File.CreateText(path)) 
    { 

क्या मैं यह करूँगा?

if (! File.Exists(path)) 
{ 
    using (StreamWriter sw = File.CreateText(path)) 
    { 

संपादित करें:

string path = txtFilePath.Text; 

if (!File.Exists(path)) 
{ 
    using (StreamWriter sw = File.CreateText(path)) 
    { 
     foreach (var line in employeeList.Items) 
     { 
      sw.WriteLine(((Employee)line).FirstName); 
      sw.WriteLine(((Employee)line).LastName); 
      sw.WriteLine(((Employee)line).JobTitle); 
     } 
    } 
} 
else 
{ 
    StreamWriter sw = File.AppendText(path); 

    foreach (var line in employeeList.Items) 
    { 
     sw.WriteLine(((Employee)line).FirstName); 
     sw.WriteLine(((Employee)line).LastName); 
     sw.WriteLine(((Employee)line).JobTitle); 
    } 
    sw.Close(); 
} 

}

+1

[File.AppendAllText] (http: // MSDN .microsoft.com/en-us/library/ms143356.aspx) - यह वही कर रहा है जो आपको कोड की एक पंक्ति में चाहिए .. –

+0

@ShadowWizard वें टैग किया गया है होमवर्क ओपी वास्तव में सशर्त तर्क दिखाने के लिए निर्देशित किया जा सकता है। – Yuck

+4

@ यक - पहिया को फिर से शुरू करने के लिए होमवर्क? नीरस ;) –

उत्तर

63

आप बस फोन

using (StreamWriter w = File.AppendText("log.txt")) 

यह फ़ाइल पैदा करेगा कर सकते हैं अगर यह मौजूद नहीं है और जोड़कर के लिए फ़ाइल खोलें।

संपादित करें:

यह पर्याप्त है:

string path = txtFilePath.Text;    
using(StreamWriter sw = File.AppendText(path)) 
{ 
    foreach (var line in employeeList.Items)     
    {      
    Employee e = (Employee)line; // unbox once 
    sw.WriteLine(e.FirstName);      
    sw.WriteLine(e.LastName);      
    sw.WriteLine(e.JobTitle); 
    }     
}  

लेकिन अगर आप पहले की जाँच पर जोर देते हैं, तो आप इस तरह कुछ कर सकते हैं, लेकिन मैं बात नहीं दिख रहा।

string path = txtFilePath.Text;    


using (StreamWriter sw = (File.Exists(path)) ? File.AppendText(path) : File.CreateText(path))     
{      
    foreach (var line in employeeList.Items)      
    {       
     sw.WriteLine(((Employee)line).FirstName);       
     sw.WriteLine(((Employee)line).LastName);       
     sw.WriteLine(((Employee)line).JobTitle);      
    }     
} 

इसके अलावा, आपके कोड के साथ इंगित करने के लिए एक बात यह है कि आप बहुत अनावश्यक अनबॉक्सिंग कर रहे हैं। यदि आपको ArrayList जैसे सादे (गैर-जेनेरिक) संग्रह का उपयोग करना है, तो ऑब्जेक्ट को एक बार अनबॉक्स करें और संदर्भ का उपयोग करें।

हालांकि, मैं अपने संग्रह के लिए List<> उपयोग करने के लिए perfer:

public class EmployeeList : List<Employee> 
6

हाँ, आप File.Exists(path) नकारना की जरूरत है आप अगर फाइल मौजूद नहीं करता है की जाँच करना चाहते हैं।

8

आपको मैन्युअल रूप से चेक करने की भी आवश्यकता नहीं है, File.Open यह आपके लिए करता है। प्रयास करें:

using (StreamWriter sw = new StreamWriter(File.Open(path, System.IO.FileMode.Append))) 
{ 

रेफरी: http://msdn.microsoft.com/en-us/library/system.io.filemode.aspx

12

या:

using(var fileStream = File.Open(path, FileMode.OpenOrCreate, FileAccess.ReadWrite)) 
{ 
    using (StreamWriter sw = new StreamWriter(path, true)) 
    { 
     //... 
    } 
} 
-1

उदाहरण

लिए
string rootPath = Path.GetPathRoot(Environment.GetFolderPath(Environment.SpecialFolder.System)); 
     rootPath += "MTN"; 
     if (!(File.Exists(rootPath))) 
     { 
      File.CreateText(rootPath); 
     }