.OnlineGuruji

.OnlineGuruji

Provides E-Notes,Video Tutorials And Download Links For Students In hindi

*********************************************************

*********************************************************
********************************************************************************

Breaking

Ramchandicollege Saraipali

Technology Jobs

OnlineGuru Blog मे आपका स्वागत है ब्लॉग से संबन्धित जानकारी के लिए संपर्क करें मो ॰ नम ।-9826026747(सपन कुमार दास) अपने विषय से संबन्धित अपडेट प्राप्त करने के लिए ब्लॉग पे दिये गए Bell Icon को press करें कम्प्युटर,Science,English Grammer से संबन्धित विषय की अधिक जानकारी के लिए हमारे ब्लॉग अथवा यू ट्यूब चैनल को सब्क्राइब करे ..

Sunday, December 18, 2022

December 18, 2022

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



 


फाइल क्या होते है? – 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)

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

जैसे ही प्रोग्राम रैम से निकलता है वेरिएबल को मिला मेमोरी स्पेस भी 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

Function

description

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

Mode

Description

r

opens a text file in read mode

w

opens a text file in write mode

a

opens 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

rb

opens a binary file in read mode

wb

opens a binary file in write mode

ab

opens 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() के द्वारा हम कसी भी फाइल को आसानी से बंद कर सकते है |

वैसे तो सी लैंग्वेज में प्रोग्राम समाप्ति के साथ ही फाइल्स क्लोज हो जाते है 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;
}