फाइल हैंडलिंग क्या है? – File Handling in C in Hindi

सी लैंग्वेज में File Handling का कांसेप्ट काफी महत्वपूर्ण है | फाइल हैंडलिंग के Concept को अच्छे से समझने के लिए सबसे पहले आपको ये जानना आवश्यक है कि फाइल क्या होते है और फाइल कितने प्रकार के होते है ? 

Files के बारे में जाने बिना आप File Handling को अच्छे से नहीं समझ पाएंगे तो आज के इस आर्टिकल में फाइल के कांसेप्ट को समझने के बाद हम ये जानेंगे कि फाइल हैंडलिंग क्या है? (What is File Handling in C in Hindi) और सी लैंग्वेज में फाइल हैंडलिंग कैसे करते है?

तो आइये बिना समय गवाए सबसे पहले हम जानते है कि फाइल क्या होते है?

फाइल क्या होते है? – What is File

File, बाइट्स का एक संग्रह है जो डिस्क जैसे सेकेंडरी स्टोरेज डिवाइस पर स्टोर होता है। एक सिस्टम में दो तरह की फाइलें होती हैं -:

  • Text file 
  • Binary file

#1. Text File -:

Text files सामान्य .txt फ़ाइलें होती हैं। इन टेक्स्ट फाइल्स को बनाना काफी आसान है | आप किसी भी साधारण टेक्स्ट एडिटर जैसे नोटपैड का उपयोग करके आसानी से इन टेक्स्ट फाइलों को बना सकते हैं 

जब आप इन टेक्स्ट फाइल्स को ओपन करेंगे तब आप फ़ाइल के सभी Content को plain text के रूप में देखेंगे। आप चाहे तो इन कंटेंट को आसानी से Edit या डिलीट कर सकते हैं।

#2. Binary Files -:

आपके कंप्यूटर में .bin नाम से कोई न कोई फाइल जरुरु होगी | ये जो .bin फाइल है उसे ही बाइनरी फाइल कहते है | 

बाइनरी फाइल्स, plain text में इनफार्मेशन स्टोर करने के बजाय बाइनरी नंबर्स ( 0 और 1) के फॉर्म में इनफार्मेशन स्टोर करते है | 

इन बाइनरी फाइल्स में हम ज्यादा मात्रा में डेटा स्टोर कर सकते है | चूँकि इन बाइनरी फाइल्स में इनफार्मेशन बाइनरी फॉर्म ( 0 और 1 के रूप में ) होता है इसलिए इन्हे आसानी से पढ़ा नहीं जा सकता | ये redable नहीं होते |

तो दोस्तों यहां तक हमने जाना कि फाइल क्या होते है और फाइल कितने प्रकार के होते है | 

आइये अब हम ये जान लेते है कि फाइल हैंडलिंग क्या है और फाइल हैंडलिंग की जरूरत क्यों पड़ती है?

File Handling in C in Hindi

फाइल हैंडलिंग क्या है? (File Handling in C in Hindi)

सी लैंग्वेज में किसी भी वेरिएबल को मेमोरी तब मिलती है जब प्रोग्राम रैम में आता है | चूँकि प्रोग्राम को रैम में मेमोरी मिलती है और रैम एक वोलेटाइल मेमोरी है इसलिए प्रोग्राम के रैम से बहार जाते ही प्रोग्राम का सारा डेटा नष्ट हो जाता है | 

जैसे ही प्रोग्राम रैम से निकलता है वेरिएबल को मिला मेमोरी स्पेस भी deallocate हो जाता है | 

ऐसे में यदि हम इन वेरिएबल्स में स्टोर वैल्यू को परमानेंट स्टोर करके रखना चाहेंगे तो नहीं रख पाएंगे क्योकि वेरिएबल की लाइफ ज्यादा से ज्यादा प्रोग्राम के लाइफ के बराबर होती है जैसे ही प्रोग्राम समाप्त होता है वैसे ही वेरिएबल भी समाप्त हो जाते है | 

यदि हम वेरिएबल में स्टोर वैल्यू को प्रोग्राम समाप्त होने के बाद भी चाहते है तब इसके लिए हमे इन वेरिएबल में स्टोर वैल्यू को पर्मानेंटे स्टोरेज मेमोरी (जैसे कि हार्डडिस्क के अंदर फाइल्स के रूप में) स्टोर करना पड़ेगा | 

ऐसा करने के लिए हमें अपने प्रोग्राम में कुछ ऐसे कोड लिखने होंगे जिससे की वेरिएबल के अंदर का डेटा सेकेंडरी स्टोरेज में स्थित फाइल के अंदर सेव हो जाये और जब हम ऐसा करते है तो इसे ही फाइल हैंडलिंग जाहते है | 

फाइल हैंडलिंग एक ऐसा तरीका है जिसमे हम प्रोग्राम के डेटा को डिस्क फाइल्स में परमानेंटली स्टोर कर सकते है | 

फाइल हैंडलिंग के द्वारा हम प्रोग्राम में वेरिएबल्स के अंदर स्थित डेटा को सेकेंडरी स्टोरेज में आसानी से फाइल्स के अंदर स्टोर कर सकते है और हम इन फाइल्स के अंदर के डेटा हो वेरिएबल में असाइन करके पुनः उपयोग कर सकते है | 

सी लैंग्वेज में फाइल हैंडलिंग के द्वारा हम आसानी से फाइल्स को create, update, read, और delete कर सकते है |

फाइल हैंडलिंग को मुख्यतः तो केटेगरी में बाँटा जा सकता है -:

  • High level (standard files or stream oriented files) 
  • Low-level(system oriented files)

High level file handling लाइब्रेरी फंक्शन्स द्वारा मैनेज किया जाता है और Low-level file handling सिस्टम कॉल्स द्वारा मैनेज किया जाता है | 

High level फ़ाइल हैंडलिंग का उपयोग आमतौर पर किया जाता है क्योंकि इसे मैनेज करना आसान होता है | 

फाइल हैंडलिंग के लिए हमे अपने प्रोग्राम में कई सारे फाइल फंक्शन और ऑपरेशन्स का उपयोग करना पड़ता है | 

आइयें जाते है उन फाइल फंक्शन और ऑपरेशन्स के बारे में |

Functions Use In File Handling

Functiondescription
fopen()नया फाइल बनाने या पहले से बने फाइल को ओपन करने के लिए |
fclose()फाइल को क्लोज करने के लिए |
getc()फाइल से करैक्टर को पढ़ने के लिए |
putc()फाइल में करैक्टर write करने के लिए |
fscanf()फाइल से सेट ऑफ़ डेटा रीड करने के लिए |
fprintf()फाइल में सेट ऑफ डेटा लिखने करने के लिए |
getw()फाइल से इन्टिजर रीड करने के लिए |
putw()फाइल में इन्टिजर Write करने के लिए 
fseek()स्थिति को वांछित बिंदु पर सेट करने के लिए |
ftell()फाइल में वर्तमान स्थिति प्रदान करने के लिए |
rewind()स्थिति को फाइल के शुरुवात में सेट करने के लिए |

ऊपर मैंने अभी जितने भी फंक्शन्स के बारे में बताया है ये सभी फंक्शन्स फाइल हैंडलिंग में उपयोग होने वाले फंक्शन थे जिनका उपयोग निचे हम प्रोग्राम बनाते समय करने वाले है | 

ऐसा हो सकता है कि आपको अभी इन फंक्शन्स का उपयोग अच्छे से समझ न आया हो मगर आगे जब हम फाइल हैंडलिंग के बारे में पढ़ेंगे तब आपको इन सभी फंक्शन के बारे में अच्छे से जानकारी हो जाएगी | 

यदि आपको इन फंक्शन के उपयोग के बारे में अलग से आर्टिकल चाहिए तो निचे कमेंट में बताये यदि ज्यादा लोगो का comment आता है तो मैं इन फंक्शन के बारे में अलग से आर्टिल्स लिखकर बताऊंगा | 

आइये अब हम कुछ फाइल ऑपरेशन्स के बारे में जान लेते है | 

File Operations

सी लैंग्वेज में हम निम्न तरह के फाइल ऑपरेशन परफॉर्म करते है -:

  • Creation of a new file 
  • Opening an existing file 
  • Reading from file
  • Writing to a file 
  • Moving to a specific location in a file 
  • Closing a file

Opening or Creation of a new file 

सी लैंग्वेज में फाइल्स बनाने या बने हुए फाइल्स को ओपन करने के लिए fopen() फंक्शन का उपयोग किया जाता है | fopen() फंक्शन, stdio.h नाम के हैडर फाइल में डिफाइंड है | इसका सिंटेक्स कुछ ऐसा होता है -:

Syntax -:

FILE *fp;
fp = fopen("file_name","mode");
  • यहाँ fp एक FILE पॉइंटर है जो fopen() द्वारा ओपन किये जाने वाले फाइल को पॉइंट करेगा | 
  • FILE एक स्ट्रक्चर है जो फाइल से सम्बंधित इनफार्मेशन जैसे –  name, size, buffer size, current position, end of file आदि Contain करता है | 
  • file_name – यहाँ पर उस फाइल का नाम आएगा जिसे हम ओपन करना चाहते है | 

mode – फाइल में हम कौन सा ऑपरेशन (जैसे read ,write ,update) करना चाहते है इसके हिसाब से हम mode तय करते है |

Example 

FILE *fp;
fp = fopen(“fileName.txt”, “w”)

यहाँ इस उदाहरण में fileName.txt उस फाइल का नाम है जिसे हम ओपन करना चाहते है और w फाइल ओपनिंग मोड है जो बताता है कि इस फाइल को हम write ऑपरेशन परफॉर्म करने के लिए ओपन कर रहे है | 

सी लैंग्वेज में हमारे पास अलग अलग कंडीशन के हिसाफ से अलग अलग फाइल ओपनिंग मोड है जिनका अपना अपना उद्देश्य है आइये जानते है इन opening mode  के बारे में | 

File Opening Modes In C

ModeDescription
ropens a text file in read mode
wopens a text file in write mode
aopens a text file in append mode
r+opens a text file in read and write mode
w+opens a text file in read and write mode
a+opens a text file in read and write mode
rbopens a binary file in read mode
wbopens a binary file in write mode
abopens a binary file in append mode
rb+opens a binary file in read and write mode
wb+opens a binary file in read and write mode
ab+opens a binary file in read and write mode

तो दोस्तों ये कुछ फाइल ओपनिंग mode थे जिसे हम fopen() फंक्शन के साथ उपयोग करते है | 

इन फाइल ओपनिंग मोड के बारे में और अच्छे से जानने के लिए आप निचे दिए गए वीडियो को एक बार जरूर देखे क्योकि आगे जो मैं आपको बताने वाला हूँ उसको समझने के लिए आपको फाइल ओपनिंग मोड के बारे में अच्छे से जानकारी जाना जरुरी है |

How fopen() function works 

  • जब भी हम fopen() Function को कॉल करते है तब यह सबसे पहले उस फाइल को जिसे आपने fopne() फंक्शन के पैरेंथेसिस में कॉल करते समय लिखा था उसे आपके कंप्यूटर डिस्क में फाइंड करता है | 
  • यदि fopen() फंक्शन को वो फाइल मिल जाती है तो वो इस फाइल को डिस्क से बफर स्पेस में लोड करता है और फिर फाइल को बफर से required मोड में ओपन कर देता है और यदि फाइल नहीं मिलती तो यह खुद से एक नया फाइल बना देता है और  उसे ओपन कर देता है | यह इस नए फाइल का नाम वही रखता है जैसे आपने इसके पैरेंथेसिस में रखा था | 

आइये fopen() फंक्शन के उपयोग को एक उदाहरण से समझते है | 

Example -:

#include <stdio.h>
int main()
{
   FILE * fp;
   if (fp = fopen("hello.txt", "r"))
   {
      printf("File opened successfully in read mode");
   }
   else
   printf("The file is not present! cannot create a new file using r mode");
   fclose(fp);
   return 0;
}

Output -:

The file is not present! cannot create a new file using r mode

Program explanation -:

  • इस प्रोग्राम में हमने सबसे पहले एक fp नाम से एक फाइल पॉइंटर बनाया जो fopen() फंक्शन द्वारा ओपन होने वाले फाइल को पॉइंट करता है | 
  • fopen() फंक्शन के द्वारा हमने फाइल को read मोड में ओपन करने की कोशिश की, मगर फाइल ओपन नहीं हुवा क्योकि हमारे डिस्क में इस नाम से कोई फाइल नहीं था इसलिए फाइल ओपन नहीं हुवा और result में else वाला स्टेटमेंट रन हुवा | 
  • यदि इस फाइल को हम write मोड में ओपन करते तो नया फाइल बन कर ओपन हो जाता. मगर read मोड में कोई फाइल तभी ओपन होती है जब वो पहले से हमारे डिस्क में मौजूद हो मगर इस प्रोग्राम में हमारे डिस्क में इस नाम से कोई फाइल नहीं था इसलिए नया फाइल नहीं बना | 
  • प्रोग्राम के आखिर में हमने fclose() फंक्शन का उपयोग करके फाइल को क्लोज कर दिया |

Closing a File

जैसे की मैंने आपको ऊपर बताया है, किसी भी फाइल को close करने के लिए fclose() फंक्शन का उपयोग किया जाता है | fclose() के द्वारा हम कसी भी फाइल को आसानी से बंद कर सकते है |

वैसे तो सी लैंग्वेज में प्रोग्राम समाप्ति के साथ ही फाइल्स क्लोज हो जाते है मगर मैं आपको सलाह दूंगा कि आप फाइल को मैन्युअली fclose() फंक्शन का उपयोग करके क्लोज करे | ऐसा करना आपके लिए एक अच्छा प्रैक्टिस होगा | 

Syntax -:

fclose (file_pointer);

Reading from file

किसी फाइल को रीड करने के लिए सबसे पहले उस फाइल को रीड मोड “r”  में fopen फंक्शन द्दारा ओपन करना पड़ता है | 

फाइल को ओपन करने के बाद फाइल के अंदर के डेटा को रीड करने के लिए सी लैंग्वेज में हम कुछ फंक्शन का उपयोग करते है |

  • fgetc()
  • fgets()
  • fscanf()

1. fgetc(file_pointer) -:  यह फ़ाइल पॉइंटर द्वारा इंगित फ़ाइल से अगला करैक्टर रिटर्न करता है। जब यह फ़ाइल के अंत तक पहुँच जाता है, तब यह फ़ंक्शन EOF (End of File) लौटाता है। 

Example -:

#include <stdio.h>
#include <stdlib.h>
int main()
{
     /* Pointer to the file */
     FILE *fp1;
     /* Character variable to read the content of file */
     char c;

     /* Opening a file in r mode*/
     fp1= fopen ("C:\\myprogram.txt", "r");

     /* Infinite loop –I have used break to come out of the loop*/
     while(1)
     {
        c = fgetc(fp1);
        if(c==EOF)
            break;
        else
            printf("%c", c);
     }
     fclose(fp1);
     return 0;
}

2. fgets() -: यह फ़ाइल से n-1 करैक्टर पढ़ता है और स्ट्रिंग को एक बफर में संग्रहीत करता है जिसमें NULL करैक्टर ‘\0’ को अंतिम करैक्टर के रूप में जोड़ा जाता है।

Syntax -:

 fgets(buffer, n, file_pointer);

3. fscanf() -: इसका उपयोग डेटा को analyze करने के लिए किया जाता है। यह फ़ाइल से characters को पढ़ता है | 

यह scanf फंक्शन की तरह space or newline आने पर रीडिंग बंद कर देता है | 

Syntax -: 

fscanf(file_pointer, conversion_specifiers, variable_adresses);

Example -:

FILE *fp
fp = fopen (“file.txt”, “r”);
fscanf (fp, "%s %s %s %d", str1, str2, str3, &date);

Writing to a file 

फाइल के अंदर राइटिंग ऑपरेशन परफॉर्म करने के लिए सबसे पहले आपको उस फाइल को write मोड “w” में ओपन करना होगा | 

यदि आप फाइल को किसी दूसरे मोड जैसे “r” मोड में ओपन करते है तो आप फाइल में राइटिंग ऑपरेशन परफॉर्म नहीं कर सकते यदि आप ऐसा करने की कोशिस करेंगे तो कम्पाइलर आपको error देगा | 

फाइल को write मोड “w” में ओपन करने पर यदि वो फाइल पहले से आपके डिस्क में मौजूद नहीं है तो fopen() फंक्शन आपके लिए एक नया फाइल क्रिएट करके उसे ओपन कर देगा और यदि फाइल पहले से मौजूद है तो यह फाइल में पहले से लिखे डेटा को हटा देगा और नए आने वाले डेटा को फाइल में Enter कर देगा | 

फाइल ओपन होने के बाद फाइल में write करने के लिए fprintf, fputc और fputs फंक्शन का उपयोग किया जाता है | 

इन तीनो फंक्शन का कार्य सामान है ये आप पर डिपेंड करता है कि आप किसका उपयोग करते है | 

Example -:

यहाँ मैं आपको fprinf फंक्शन का उपयोग करते हुए फाइल में write ऑपरेशन परफॉर्म करके दिखा रहा हु -:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   char ch;
   FILE *fp;
   fp = fopen("C:\\myprogram.txt","w");

   if(fp == NULL)
   {
      printf("Error");   
      exit(1);             
   }

   printf("Enter any character: ");
   scanf("%c",&ch);

   /* You can also use fputc(ch, fp);*/
   fprintf(fp,"%c",ch);
   fclose(fp);

   return 0;
}

Conclusion

दोस्तों आशा करता हु कि आज के इस आर्टिकल को पढ़ने के बाद आपको फाइल हैंडलिंग क्या है? (What is File Handling in C in Hindi) और सी लैंग्वेज में फाइल हैंडलिंग कैसे करते है? से संबंधित सभी जानकारी मिल गई होगी |

अगर आप सी लैंग्वेज का Complete Tutorial चाहते है तो मेरे इस पोस्ट C Language Tutorial In Hindi को देखे यहाँ आपको C Programming Language के सभी टॉपिक्स step by step मिल जाएगी |

दोस्तों आशा करता हु कि आपको ये पोस्ट पसंद आई होगी और आपको फाइल हैंडलिंग क्या है? (What is File Handling in C in Hindi) के बारे में काफी जानकरी हुई होगी |

अगर आपको ये पोस्ट पसंद आया है तो इस पोस्ट को अपने अपने दोस्तों को शेयर करना न भूलिएगा ताकि उनको भी ये जानकारी प्राप्त हो सके |

अगर आपको अभी भी File Handling Kya Hai? से संबंधित कोई भी प्रश्न या Doubt है तो आप जरूर बताये मैं आपके सभी सवालों का जवाब दूँगा और ज्यादा जानकारी के लिए आप हमसे संपर्क कर सकते है

एसी ही नया टेक्नोलॉजी ,Programming Language, Coding , C Language, C++, Python Course , Java Tutorial से रिलेटेड जानकारियाँ पाने के लिए हमारे इस वेबसाइट को सब्सक्राइब कर दीजिए | जिससे हमारी आने वाली नई पोस्ट की सूचनाएं जल्दी प्राप्त होगी |

Jeetu Sahu is A Web Developer | Computer Engineer | Passionate about Coding, Competitive Programming and Blogging

Leave a Comment