Students frequently turn to Computer Class 12 GSEB Solutions and GSEB Computer Textbook Solutions Class 12 Chapter 11 ફાઈલ-વ્યવસ્થાપન for practice and self-assessment.
GSEB Computer Textbook Solutions Class 12 Chapter 11 ફાઈલ-વ્યવસ્થાપન
પ્રશ્ન 1.
જાવા પ્રોગ્રામિંગમાં ફાઈલ શા માટે અગત્યની છે? કેવા સંજોગો હેઠળ તમે ડેટાને ફાઈલમાં સાચવશો?
ઉત્તરઃ
કમ્પ્યૂટર ફાઈલ પરિચય (Introduction to Computer File)
- આ પ્રકરણમાં આપણે જાવા પ્રોગ્રામ દ્વારા હાર્ડ ડિસ્ક પરની જુદી જુદી ફાઈલ અને ડિરેક્ટરીને કેવી રીતે ઉપયોગમાં લેવી, ઓળખવી અને સેવ કરવી તે જોઈશું.
- અહીં આપણે java.io પૅકેજમાં ઉપલબ્ધ સૌથી સામાન્ય ક્લાસ અને java.util પૅકેજના થોડા ક્લાસનો ઉપયોગ કરીશું.
- ફાઈલોને મુખ્યત્વે બે વિભાગમાં વહેંચી શકાય :
(1) ટેક્સ્ટ (Text) ફાઈલ
(2) દ્વિઅંકી (Binary) ફાઈલ
(1) ટેક્સ્ટ (Text) ફાઈલ : ટેક્સ્ટ ફાઈલ એવો ડેટા ધરાવે છે કે જે કોઈ ટેક્સ્ટ એડિટર દ્વારા વાંચી શકાય છે, કારણ કે ડેટા ASCII અથવા Unicode જેવી પદ્ધતિના ઉપયોગ દ્વારા સંજ્ઞાંકિત કરાયેલ હોય છે.
- ટેક્સ્ટ ફાઈલ ડેટા ફાઈલ હોઈ શકે છે, જે હકીકતો ધરાવતી હોય. જેમ કે પે-રોલ ફાઈલ, જે કર્મચારી ક્રમ, નામ અને પગાર સમાવે છે. કેટલીક ટેક્સ્ટ ફાઈલ એ પ્રોગ્રામ ફાઈલ અથવા વિનિયોગ ફાઈલ પણ હોઈ શકે, જે સૉફ્ટવેર માટેની સૂચનાઓ સમાવી શકે છે.
- ટેક્સ્ટ ફાઈલનાં ઉદાહરણ : gedit, vi, pico જેવા એડિટર દ્વારા તૈયાર કરાયેલ ફાઈલો.
- ટેક્સ્ટ ફાઈલનાં અનુલંબન : .txt, .java અથવા .c હોઈ શકે છે.
(2) દ્વિઅંકી (Binary) ફાઈલ : દ્વિઅંકી ફાઈલ એવો ડેટા ધરાવે છે, જે લખાણ તરીકે સંજ્ઞાંકિત (Encoded) કરાયો નથી. તેનું લખાણ દ્વિઅંકી સ્વરૂપે જ હોય છે. એટલે કે ડેટા બાઇટ (Byte) સ્વરૂપે ઉપયોગમાં લેવાય છે.
દ્વિઅંકી ફાઈલનાં ઉદાહરણરૂપ અનુલંબનો : .jpeg, .mp3 અને .class છે.
પ્રશ્ન 2.
ફાઈલ અને ડિરેક્ટરી પર કરી શકાતી વિવિધ
ક્રિયાઓ જણાવો.
ઉત્તરઃ
જાવા પ્રોગ્રામ દ્વારા ફાઈલ તથા ડિરેક્ટરી ઉપર કરી શકાતી ક્રિયાઓ
- જાવા ભાષા ફાઈલ અથવા ડિરેક્ટરી પર કરી શકાય તેવી ઘણી બધી ક્રિયાઓને સમર્થન આપે છે. જાવા પ્રોગ્રામ દ્વારા ફાઈલ ઉપર કરી શકાતી કેટલીક ક્રિયાઓની યાદી નીચે મુજબ છે :
- ફાઈલ ખોલવી (Opening file)
- ફાઈલમાંથી વાંચવું (Reading from file)
- ફાઈલમાં લખવું (Writing in file)
- ફાઈલને બંધ કરવી (Closing file)
- ફાઈલને કાઢી નાખવી (Deleting file)
- ફાઈલના ગુણધર્મો તપાસવા (Checking attributes of file)
- જાવા એવા તૈયાર આંતરપ્રસ્થાપિત ક્લાસ (In-built classes) આપે છે, જેમાં આવાં બધાં કામો પાર પાડવા આપણને મદદરૂપ થવા માટેની પદ્ધતિ (Methods) આપેલી હોય છે.
- આ ક્લાસ java.io પૅકેજમાં ઉપલબ્ધ હોય છે.
- જાવા સ્ટ્રીમ(Streams)નો ઉપયોગ કરે છે અને તે બાઇટ્સ અને અક્ષરો પર ઇનપુટ | આઉટપુટ ક્રિયાઓને પાર પાડવા બે જુદી જુદી કક્ષાના જાવા ક્લાસ પૂરા પાડે છે.
પ્રશ્ન 3.
જાવામાં શા માટે સ્ટ્રીમ(Stream)નો ખ્યાલ રજૂ કરવામાં આવ્યો છે? સ્ટ્રીમનો ઉપયોગ કરવાના ફાયદા જણાવો.
ઉત્તરઃ
સ્ટ્રીમનો પરિચય (Introduction to Stream)
- ફાઈલમાં લખવા કે ફાઈલમાંથી વાંચવાની ક્રિયા પાર પાડવા માટે જાવા સ્ટ્રીમ ક્લાસનો ઉપયોગ કરે છે.
- કી-બોર્ડ એ ઇનપુટ માટેનું સાધન છે, જ્યારે મૉનિટર એ આઉટપુટ માટેનું સાધન છે. હાર્ડ ડિસ્કમાં સાચવેલ ફાઈલમાંથી આપણે ડેટા વાંચી શકીએ છીએ અને તેમાં લખી પણ શકીએ છીએ. આથી હાર્ડ ડિસ્કને ઇનપુટ તેમજ આઉટપુટ એમ બંને માટેના સાધન તરીકે વર્ગીકૃત કરી શકાય છે.
- સ્ટ્રીમ એ ડેટા માટે મૂળ કે ગંતવ્ય સ્થાન તરીકે ઉપયોગમાં લેવાતા ઇનપુટ કે આઉટપુટ સાધનની ટૂંકી રજૂઆત છે. સ્ટ્રીમને આપણે પ્રોગ્રામમાં આવતા કે પ્રોગ્રામમાંથી જતા બાઇટની હારમાળા તરીકે કલ્પી શકીએ.
- આપણે સ્ટ્રીમનો ઉપયોગ કરીને ડેટાને લખી શકીએ કે વાંચી શકીએ છીએ.
આઉટપુટ સ્ટ્રીમ (Output Stream) : જ્યારે આપણે સ્ટ્રીમમાં ડેટા લખતા હોઈએ, ત્યારે તે સ્ટ્રીમને આઉટપુટ સ્ટ્રીમ (Output Stream) કહે છે. - આઉટપુટ સ્ટ્રીમ પ્રોગ્રામમાંથી હાર્ડ ડિસ્ક ૫૨ ફાઈલમાં અથવા મૉનિટર પર અથવા નેટવર્કના કોઈ એક કમ્પ્યૂટર પર ડેટાને તબદીલ કરી શકે છે.
ઇનપુટ સ્ટ્રીમ (Input Stream) : બાહ્ય સાધન પરથી ડેટા વાંચવા માટે ઇનપુટ સ્ટ્રીમ (Input Stream) ઉપયોગમાં લેવાય છે. - ઇનપુટ સ્ટ્રીમ કી-બોર્ડ પરથી અથવા હાર્ડ ડિસ્ક પરની ફાઈલમાંથી ડેટાને પ્રોગ્રામમાં તબદીલ કરે છે.
- ઇનપુટ કે આઉટપુટ ક્રિયાઓ માટે સ્ટ્રીમનો ઉપયોગ કરવા પાછળનું મુખ્ય કારણ, પ્રોગ્રામને ઉપયોગમાં લેવાનારાં સાધનોથી સ્વતંત્ર બનાવવાનો છે.
- સ્ટ્રીમના મુખ્ય બે લાભ છે :
- સાધનોની ટેક્નિકલ વિગતો વિશે જાણવાની પ્રોગ્રામરને ચિંતા કરવાની જરૂર રહેતી નથી.
- પ્રોગ્રામની મૂળ સૂચનાઓ(સોર્સ કોડ)માં કોઈ પણ સુધારા કર્યા વિના પ્રોગ્રામ વિવિધ પ્રકારનાં ઇનપુટ / આઉટપુટ સાધનો માટે કામ કરી શકે છે.
જાવામાં સ્ટ્રીમ ક્લાસ (Stream Classes in Java)
- જાવામાં સ્ટ્રીમ ક્લાસ બે પ્રકારના હોય છે :
- બાઇટ સ્ટ્રીમ ક્લાસ
- કૅરેક્ટર સ્ટ્રીમ ક્લાસ
- સૌપ્રથમ આપણે બાઇટ અને કૅરેક્ટરની રજૂઆત વચ્ચેનો ભેદ સમજીએ.
દા. ત., સંખ્યા “5”
કોષ્ટક 2માં દર્શાવ્યા મુજબ આપણે આ સંખ્યાને બે જુદી જુદી રીતે રજૂ કરી શકીએ.
કોષ્ટક 2 : અક્ષર અને બાઇનરી રજૂઆત
રજૂઆત | વિગત | બાઇનરી રજૂઆત |
અક્ષર 5 | ASCII કિંમત : 53 |
00110101 |
બાઇનરી અંક 5 | બાઇનરી
કિંમત 5 |
00000101 |
- કોઈ પણ અક્ષરને સામાન્ય રીતે ASCII અથવા યુનિકોડ (Unicode) સ્વરૂપે સાચવવામાં આવે છે. પરંતુ જ્યારે તેને ગણતરીના ઉદ્દેશથી વાપરવામાં આવે છે, ત્યારે તેની બાઇનરી કિંમત અર્થપૂર્ણ બને છે.
- જ્યાં આપણે સંખ્યા ઉપર કોઈ પણ પ્રકારની ક્રિયાઓ કરતાં નથી ત્યાં શાબ્દિક રજૂઆત સલાહભરી છે. પરંતુ જ્યારે આપણે ગાણિતિક ક્રિયાઓ કરવી હોય ત્યારે આપણે int, float અથવા double જેવા ડેટાપ્રકાર(Data type)નો ઉપયોગ કરવો જોઈએ, જે આપણને સંખ્યા દ્વિઅંકી સ્વરૂપે સાચવવા દે છે.
- જાવા બે પ્રકારની સ્ટ્રીમને માન્યતા આપે છે :
- બાઇટ સ્ટ્રીમ (Byte Stream)
- કૅરેક્ટર સ્ટ્રીમ (Character Stream)
એવી સ્ટ્રીમ કે જે ડેટાને ફાઈલમાં કે કોઈ સાધન તરફ બાઇટ સ્વરૂપે તબદીલ કરે તેને બાઇટ સ્ટ્રીમ અથવા બાઇનરી સ્ટ્રીમ કહે છે.
- બાઇટ સ્ટ્રીમના ઉપયોગથી તૈયાર થતી ફાઈલોને બાઇની ફાઈલ તરીકે ઓળખવામાં આવે છે.
- જો આપણે ફાઈલમાં પૂર્ણાંક, ડબલ અથવા બુલિયન જેવા ચલ સાચવવા ઇચ્છતા હોઈએ, તો આપણે બાઇનરી ફાઈલ જ ઉપયોગમાં લેવી પડે.
- ઍરે કે ઑબ્જેક્ટ સાચવવા બાઇનરી ફાઈલનો ઉપયોગ કરી શકાય છે.
- ટેક્સ્ટ ફાઈલો અને પ્રોગ્રામ કોડ બનાવવા કૅરેક્ટર સ્ટ્રીમનો ઉપયોગ કરાય છે.
- Vi અથવા SciTE જેવા ટેક્સ્ટ એડિટરમાં તેને ખોલી શકાય છે.
- જાવા ક્લાસના બે ગણ પૂરા પાડે છે ઃ કૅરેક્ટર સ્ટ્રીમ ક્લાસ અને બાઇનરી સ્ટ્રીમ ક્લાસ.
- java.io પૅકેજમાં ઉપલબ્ધ કૅરેક્ટર સ્ટ્રીમ ક્લાસ કૅરેક્ટર ડેટા સાથે કામ કરે છે, જ્યારે બાઇટ સ્ટ્રીમ ક્લાસ બાઇનરી ડેટા સાથે કામ કરે છે.
- આકૃતિ સ્ટ્રીમ ક્લાસનું વર્ગીકરણ દર્શાવે છે.
- java.io પૅકેજ સ્ટ્રીમ ક્લાસનો એવો સમૂહ ધરાવે છે, જે ફાઈલમાં લખવાની અને વાંચવાની ક્રિયાઓને શક્ય બનાવે છે. આ ક્લાસનો ઉપયોગ કરવા માટે પ્રોગ્રામ દ્વારા java.io પૅકેજને આયાત (Import) કરવું જરૂરી છે.
Computer Class 12 GSEB Notes Chapter 11 ફાઈલ-વ્યવસ્થાપન
કમ્પ્યૂટર ફાઈલ પરિચય (Introduction to Computer File)
કમ્પ્યૂટર સિસ્ટમનાં સંગ્રહસાધનો (Storage Devices of Computer System)
કમ્પ્યૂટર સિસ્ટમનાં સંગ્રહસાધનોને બે વિભાગમાં વહેંચવામાં આવે છે :
- નાશવંત સંગ્રહ (Volatile Storage) અને
- અવિનાશી સંગ્રહ (Non-volatile Storage).
નાશવંત સંગ્રહ અને અવિનાશી સંગ્રહ સાધનોની સરખામણી નીચે દર્શાવેલ છે :
નાશવંત સંગ્રહ (Volatile Storage) | અવિનાશી સંગ્રહ (Non-volatile Storage) |
1. તે કામચલાઉ સંગ્રહ છે. | 1. તે કાયમી સંગ્રહ છે. |
2. તેમાં જ્યારે કમ્પ્યૂટર બંધ થાય છે ત્યારે ચલમાં સાચવેલી માહિતી નાશ પામે છે. | 2. તેમાં જ્યારે કમ્પ્યૂટરને મળતો વીજપ્રવાહ બંધ થાય ત્યારે પણ ડેટા નાશ પામતો નથી. |
3. તે રેન્ડમ એક્સેસ મેમરી(RAM)નો ઉપયોગ કરે છે. | 3. તે હાર્ડ ડિસ્ક, USB ડ્રાઇવ, ઑપ્ટિકલ ડિસ્ક અને કૉમ્પેક્ટ ડિસ્ક જેવાં સાધનોનો ઉપયોગ કરે છે. |
જાવામાં ફાઈલ ક્લાસ (File Class in Java)
- java.io.File ક્લાસમાં ફાઈલ કે ડિરેક્ટરીની લાક્ષણિકતા વિશેની માહિતીનો સમાવેશ કરવામાં આવે છે. ફાઈલ કે ડિરેક્ટરીના ગુણધર્મો (Attributes) મેળવવા ફાઈલ ક્લાસનો ઉપયોગ કરી શકાય છે.
- આ ક્લાસના ઉપયોગથી આપણે ફાઈલ કે ડિરેક્ટરીને create/rename/delete કરી શકીએ છીએ તથા ફાઈલના ગુણધર્મો પણ જાણી શકીએ છીએ.
- ફાઈલ અથવા ડિરેક્ટરી પર વિવિધ પ્રક્રિયાઓ કરવા માટે ઉપયોગમાં લઈ શકાય, તેવી ફાઈલ ક્લાસની આશરે 30 પદ્ધતિઓ છે.
- ફાઈલ ક્લાસમાં ફાઈલમાંથી વાંચવા માટે કે ફાઈલમાં લખવા માટે કોઈ પદ્ધતિ ઉપલબ્ધ નથી. આવી ક્રિયાઓ પાર પાડવા માટે ઘણા બધા ‘સ્ટ્રીમ ક્લાસ’ ઉપલબ્ધ છે.
ફાઈલ ક્લાસના સર્જકો (Constructors of File Class)
- ફાઈલ ક્લાસના ઉપયોગ દ્વારા આપણે કોઈ પણ ફાઈલને તેનો સંબંધિત પથ આપીને અથવા શબ્દમાળા (String) સ્વરૂપે તેનો સંપૂર્ણ પથ આપીને અનુસંધાન આપી શકીએ છીએ.
- કોઈ ફાઈલ અથવા ડિરેક્ટરીનો ઉલ્લેખ કરવા ફાઈલ ક્લાસ નીચે મુજબના સર્જકો પૂરા પાડે છે :
File(String path)
File(String directory_path, String file_name)
File(File directory, String file_name)
ફાઈલ ક્લાસના સર્જકોનાં ઉદાહરણ :
- File fileobj = new File(“/etc/passwd”);
અહીં, લિનક્સમાં “/etc” ડિરેક્ટરીમાં ઉપલબ્ધ “passwd” ફાઈલના ગુણધર્મો દર્શાવવા “fileobj” નામનો ઑબ્જેક્ટ બનાવેલ છે, જેમાં પથ દર્શાવેલ છે. - File fileobj = new File(“/etc”,“passwd”);
અહીં, “fileobj” નામનો ઑબ્જેક્ટ બનાવવા ડિરેક્ટરી અને ફાઈલ નામને બે જુદા જુદા આર્ગ્યુમેન્ટ તરીકે દર્શાવેલ છે. - File dirobj = new File(“/etc”); File fileobj = new File(dirobj, “passwd”);
અહીં, “dirobj” ઑબ્જેક્ટમાં મૂકેલી ડિરેક્ટરીનું અનુસંધાન વાપરીને “fileobj” ઑબ્જેક્ટ બનાવેલ છે.
ફાઈલ ક્લાસની પદ્ધતિઓ (Methods of File Class)
કોષ્ટક 1 ફાઈલ ક્લાસની વધુ ઉપયોગમાં લેવાતી પદ્ધતિઓનો સારાંશ રજૂ કરે છે.
કોષ્ટક 1 : ફાઈલ ક્લાસની વધુ ઉપયોગમાં આવતી પદ્ધતિઓ
પદ્ધતિ | વર્ણન |
boolean exists( ) | જો ફાઈલ કે ડિરેક્ટરી હયાત હશે, તો true કિંમત પરત કરશે અન્યથા false કિંમત પરત કરે છે. |
boolean isFile( ) | જો ફાઈલ હયાત હશે, તો true કિંમત પરત કરશે અન્યથા false કિંમત પરત કરે છે. |
boolean isDirectory( ) | જો ડિરેક્ટરી હયાત હશે, તો true કિંમત પરત કરશે અન્યથા false કિંમત પરત કરે છે. |
boolean isHidden( ) | જો ફાઈલ કે ડિરેક્ટરી છુપાયેલી હશે, તો true કિંમત પરત કરે છે. |
String getAbsolutePath( ) | ફાઈલ કે ડિરેક્ટરીનો સંપૂર્ણ પથ (Absolute path) પરત કરે છે. |
String getName( ) | ઑબ્જેક્ટ દ્વારા સંબોધાયેલ ફાઈલ કે ડિરેક્ટરીનું નામ પરત કરે છે. |
String getPath( ) | ફાઈલ કે ડિરેક્ટરીનો પથ (Path) પરત કરે છે. |
long length( ) | તે ફાઈલમાં રહેલા બાઇટ્સની સંખ્યા પરત કરે છે. |
String[ ] list( ) | ડિરેક્ટરીમાં ઉપલબ્ધ ફાઈલો અને ડિરેક્ટરીઓનાં નામ પરત કરે છે. |
File[ ] listFiles( ) | ડિરેક્ટરીમાં ફાઈલ સૂચવતા પથનામના સારાંશ(Abstract pathnames)નો ઍરે પરત કરે છે. |
પ્રયોગ 1
હેતુ : આપેલ ડિરેક્ટરીમાં ઉપલબ્ધ ફાઈલોનાં નામની યાદી આપતો પ્રોગ્રામ બનાવવો.
- કોડ લિસ્ટિંગ 1માં આપેલ પ્રોગ્રામ “D:/Source/NAVNEET/STD 12 IMAGES/Chap 10/temp” ડિરેક્ટરીમાં ઉપલબ્ધ ફાઈલોની યાદી મેળવવાનું નિદર્શન કરે છે.
- કોઈ ચોક્કસ ડિરેક્ટરી માટે ફાઈલો અને ડિરેક્ટરીઓની સંખ્યા ગણવા માટે પ્રોગ્રામમાં આપણે એક ચલનો ઉપયોગ કરેલ છે. તેમજ ડિરેક્ટરીમાં ઉપલબ્ધ ફાઈલ ઑબ્જેક્ટને સાચવવા ફાઈલ ક્લાસનો listOfFiles નામના ઍરેનો ઉપયોગ કરાયો છે.
કોડ લિસ્ટિંગ 1નું પરિણામ આકૃતિ માં દર્શાવેલ છે.
જાવામાં સ્ટ્રીમ ક્લાસ (Stream Classes in Java)
કૅરેક્ટર સ્ટ્રીમ ક્લાસ (Character Stream Classes)
- કૅરેક્ટર સ્ટ્રીમ ક્લાસ એ java.io પૅકેજમાં ઉપલબ્ધ ક્લાસનો સમૂહ છે. તેને 16 બીટ યુનિકોડ અક્ષરો વાંચવા અને લખવા માટે ઉપયોગમાં લઈ શકાય છે.
- કૅરેક્ટર સ્ટ્રીમ ક્લાસને બે ભાગમાં વર્ગીકૃત કરી શકાય છે :
- રાઇટર ક્લાસ (Writer Class) અને
- રીડર ક્લાસ (Reader Class).
- રાઇટર ક્લાસ (Writer Class) એ ફાઈલમાં અક્ષરો લખવા માટે તૈયાર કરેલા ક્લાસનો સમૂહ છે, જ્યારે રીડર ક્લાસ (Reader Class) એ ફાઈલમાંથી અક્ષરો વાંચવા માટે તૈયાર કરેલા ક્લાસનો સમૂહ છે.
- કૅરેક્ટર સ્ટ્રીમ ક્લાસનો પદાનુક્રમ આકૃતિ માં દર્શાવેલ છે.
- આકૃતિ 11.3માં દર્શાવ્યા મુજબ, java.io.Reader ક્લાસ અને java.io.Writer ક્લાસ, ઑબ્જેક્ટ ક્લાસમાંથી ઉદ્ભવ્યા છે. તે ઑબ્જેક્ટ ક્લાસ છે. ઍબ્જેક્ટ ક્લાસ એટલે એવા ક્લાસ કે જે કોઈ ઑબ્જેક્ટ બનાવવા ઉપયોગમાં લઈ શકાતા નથી. આ બંને ક્લાસ તેના સબક્લાસ દ્વારા અમલમાં મૂકવાની પદ્ધતિઓના ગણ સાથે મળે છે.
- InputStreamReader અને BufferedReader એ Reader ક્લાસના સબક્લાસ છે.
- FileReader ક્લાસ InputStreamReader ક્લાસનો સબક્લાસ છે. એ જ રીતે OutputStreamWriter, BufferedWriter
અને PrintWriter એ Writer ક્લાસના સબક્લાસ છે. FileWriter ક્લાસ એ OutputStreamWriter ક્લાસનો સબક્લાસ છે.
(1) રાઇટર ક્લાસ (Writer Class) :
- કૅરેક્ટર સ્ટ્રીમ લખવા માટે રાઇટર ક્લાસ એ મૂળ આધારરૂપ ક્લાસ છે. ઍક્ટ્રેક્ટ રાઇટર ક્લાસ ચોક્કસ કાર્યપ્રણાલી ઘોષિત કરે છે, જે તમામ કૅરેક્ટર આઉટપુટ સ્ટ્રીમ માટે ઉપલબ્ધ બને છે. આપણે ફાઈલમાં લખવા માટેની ક્રિયા કરવા માટે FileWriter ક્લાસનો ઉપયોગ કરી શકીએ છીએ.
- રાઇટર ક્લાસની પદ્ધતિ IOException થ્રો કરે જ્યારે I/O ક્રિયા નિષ્ફળ જાય ત્યારે IOException બને છે.
- કોષ્ટક 3 રાઇટર ક્લાસની કેટલીક પદ્ધતિઓની યાદી રજૂ કરે છે.
કોષ્ટક 3 : FileWriter ક્લાસની કેટલીક પદ્ધતિઓ
પદ્ધતિ | વર્ણન |
void close( ) | સ્ટ્રીમ(Stream)ને બંધ કરે છે. |
void write(int c) | સ્ટ્રીમમાં ‘c’ના પાછળના 16 બીટ લખે છે. |
void write(Strings) | સ્ટ્રીમમાં શબ્દમાળા તરીકે ‘s’ લખે છે. |
- OutputStreamWriter ક્લાસ રાઇટર ક્લાસને વિસ્તારે છે. તે અક્ષરોની સ્ટ્રીમને બાઇટની સ્ટ્રીમમાં પરાવર્તિત કરે છે.
- FileWriter ક્લાસ, OutputStreamWriterને વિસ્તારે છે અને ફાઈલમાં અક્ષરો પરિણામરૂપે આપે છે. તેના કેટલાક કન્સ્ટ્રક્ટર નીચે મુજબ છે :
- FileWriter(String filepath) throws IOException
- FileWriter(File fileobj) throws IOException
- FileWriter(String filepath, boolean append) throws IOException
- ઉપર દર્શાવેલ કન્સ્ટ્રક્ટરમાં filepath – ફાઈલનું પૂરું પથનામ છે. fileobj – ફાઈલ ક્લાસ ઑબ્જેક્ટ છે; જે ફાઈલ વર્ણવે છે અને છેલ્લા કન્સ્ટ્રક્ટરમાં જો appendની કિંમત true મળશે, તો ફાઈલના છેડે અક્ષરો જોડવામાં આવશે. અન્યથા લખાણ ફાઈલના હાલના લખાણની ઉપર લખાઈ જશે.
ઉદાહરણ : FileWriter fwobject = new FileWriter(“/java/files/charfile1.txt’); - કોડ લિસ્ટિંગ 2માં “Charfile1.txt” ફાઈલ બનાવવા માટેનો જાવા પ્રોગ્રામ દર્શાવેલ છે તથા આકૃતિ 11.4માં આ પ્રોગ્રામનું આઉટપુટ દર્શાવેલ છે.
(2) રીડર ક્લાસ (Reader Class) :
- કૅરેક્ટર સ્ટ્રીમ વાંચવા માટે રીડર ક્લાસ એ આધારરૂપ ક્લાસ છે. ઍબ્જેક્ટ રીડર ક્લાસ ચોક્કસ કાર્યપ્રણાલી ઘોષિત કરે છે, જે તમામ કૅરેક્ટર ઇનપુટ સ્ટ્રીમ માટે ઉપલબ્ધ બને છે.
- ફાઈલમાંથી વાંચવાની ક્રિયા કરવા માટે FileReader ક્લાસનો ઉપયોગ થાય છે. કોષ્ટક 4માં રીડર ક્લાસની કેટલીક પદ્ધતિઓની યાદી રજૂ કરેલ છે.
કોષ્ટક 4 : FileReader ક્લાસની થોડીક પદ્ધતિઓ
પદ્ધતિ | વર્ણન |
void close( ) | stream ને બંધ કરે છે. |
int read( ) | સ્ટ્રીમમાંથી પછીનો ઉપલબ્ધ અક્ષર વાંચે છે. સ્ટ્રીમનો અંત દર્શાવવા તે “-1” પરત કરે છે. |
- InputStreamReader ક્લાસ રીડર ક્લાસને વિસ્તારે છે. તે બાઇટની સ્ટ્રીમને અક્ષરોની સ્ટ્રીમમાં પરિવર્તિત કરે છે.
- FileReaderClass, InputStreamReaderને વિસ્તારે છે અને ફાઈલમાંથી અક્ષરો વાંચે છે. તેના કેટલાક કન્સ્ટ્રક્ટર નીચે દર્શાવેલ છે :
- FileReader(String filepath) throws FileNotFoundException
- FileReader(File fileobj) throws FileNotFoundException.
ઉદાહરણ : FileReader fileobj = new FileReader (“/java/files/charfilel.txt”);
- કોડ લિસ્ટિંગ 3માં દર્શાવેલ પ્રોગ્રામ FileReader ક્લાસની read( ) પદ્ધતિનો ઉપયોગ કરી ફાઈલમાંથી ડેટા વાંચે છે.
- કોડ લિસ્ટિંગ 3નું પરિણામ આકૃતિ 11.5માં દર્શાવેલ છે.
નોંધ : જાવામાં ફાઈલનો અંત (End Of File – EOF) દર્શાવવા એક ખાસ ચિહ્ન છે. ફાઈલમાંથી વાંચતી વખતે, ફાઈલનો અંત આવી ગયો છે, એવી પ્રોગ્રામને ખબર પડવી જ જોઈએ. જોકે, પ્રોગ્રામ ઇનપુટ સ્ટ્રીમમાંથી વાંચે છે, માટે java read( ) પદ્ધતિ સ્ટ્રીમમાં ડેટાનો અંત દર્શાવવા “-1” પરત કરે છે.
બાઇટ સ્ટ્રીમ ક્લાસ (Byte Stream Classes)
- java.io પૅકેજનો ઉપયોગ કરીને અક્ષરો પર વિવિધ પ્રકારની પ્રક્રિયાઓ કરી શકાય છે. તે જ પ્રમાણે રોજિંદા વ્યવહારમાં આંકડાકીય ગણતરીઓની પણ જરૂર પડે છે.
- નીચે મુજબની કામગીરી કરવા માટે આંકડાકીય ગણતરીની જરૂર પડી શકે છે :
- ફાઈલમાં માલસામાન(ઇન્વેન્ટરી)ની વિગતો સાચવવા.
- માલસામાનની પડતર કિંમતની ગણતરી કરવા.
- ફાઈલમાં કર્મચારીઓને લગતી માહિતી સાચવવા.
- કર્મચારીઓના પગારની ગણતરી કરવા વગેરે.
- આંકડાકીય ગણતરી કરવા જાવા બાઇનરી સ્ટ્રીમની સુવિધા પૂરી પાડે છે.
- java.io પૅકેજ ફાઈલમાં બાઇટ લખવા અને વાંચવા માટે બે ક્લાસની સુવિધા પૂરી પાડે છે :
(1) FileInputStream
(2) FileOutputStream
(1) FileInputStream ક્લાસ :
- FileInputStream એ InputStream ક્લાસનો સબક્લાસ છે.
- FileInputStream ક્લાસનો ઉપયોગ ફાઈલમાંથી બાઇટ વાંચવા માટે થાય છે.
- FileInputStream ક્લાસ ફાઈલમાં વાંચવાની ક્રિયા કરવા માટે કેટલીક પદ્ઘતિઓ પૂરી પાડે છે, જે નીચે કોષ્ટક 5માં દર્શાવેલ છે :
કોષ્ટક 5 : FileInputStream ક્લાસની કેટલીક પદ્ધતિઓ
પદ્ધતિ | વર્ણન |
void close( ) | ફાઈલ આઉટપુટ સ્ટ્રીમને બંધ કરે છે અને સ્ટ્રીમ સાથે સંકળાયેલ કોઈ પણ સિસ્ટમ સંસાધનોને મુક્ત કરે છે. |
void write(int b) | આ આઉટપુટ સ્ટ્રીમમાં નિર્દિષ્ટ બાઇટ લખે છે. |
void write(byte[ ] b) | આ ફાઈલ આઉટપુટ સ્ટ્રીમમાં, નિર્દિષ્ટ બાઇટ ઍરેમાંથી b.length બાઇટ લખે છે. |
(2) FileOutputStream ક્લાસ :
- FileOutputStream એ OutputStream ક્લાસનો સબક્લાસ છે.
- FileOutputStream ક્લાસનો ઉપયોગ ફાઈલમાં અથવા કોઈ આઉટપુટ સ્ટ્રીમમાં બાઇટ લખવા માટે થાય છે.
- FileOutputStream ક્લાસનો ઉપયોગ કરવા સૌપ્રથમ ફાઈલ ઑબ્જેક્ટ બનાવવો પડે છે અને ત્યારબાદ ફાઈલમાં બાઇટ લખવા માટે OutputStream ઍબ્જેક્ટ ક્લાસમાંથી લાવેલ write પદ્ધતિનો ઉપયોગ કરવામાં આવે છે.
- FileOutputStream ક્લાસ ફાઈલમાં લખવાની ક્રિયા કરવા માટે કેટલીક પદ્ધતિઓ પૂરી પાડવામાં આવે છે, જે કોષ્ટક 6માં દર્શાવેલ છે.
કોષ્ટક 6 : FileOutputStream ક્લાસની કેટલીક પદ્ધતિઓ
પદ્ધતિ | વર્ણન |
void close( ) | ફાઈલ ઇનપુટ સ્ટ્રીમને બંધ કરે છે અને સ્ટ્રીમ સાથે સંકળાયેલ કોઈ પણ સિસ્ટમ સંસાધનોને મુક્ત કરે છે. |
int read( ) | આ ઇનપુટ સ્ટ્રીમમાંથી ડેટા બાઇટ વાંચે છે. |
int read(byte[ ] b) | આ ફાઈલ ઈનપુટ સ્ટ્રીમમાં, નિર્દિષ્ટ બાઇટ ઍરેમાંથી b.length વાંચે છે. |
- ફાઈલમાં માહિતી લખવા અને વાંચવાની ક્રિયા કરવા માટે FileInputStream અને FileOutputStream ક્લાસનો ઉપયોગ કરીને બનાવેલ પ્રોગ્રામ કોડ લિસ્ટિંગ 4માં દર્શાવેલ છે.
કી-બોર્ડ પરથી મળતા ઇનપુટની પ્રક્રિયા (Processing Input from Keyboard)
- જાવા પ્રોગ્રામને કી-બોર્ડ દ્વારા ડેટા ઇનપુટ કરવા માટેના વિવિધ રસ્તા છે, જે નીચે મુજબ છે :
- કી-બોર્ડ કે GUI (Graphical User Interface) મારફત જીવંત સંપર્ક દ્વારા.
- કમ્પ્યૂટરને અપાતા આદેશની સાથે ટાઇપ કરતો ડેટા કે જેને કમાન્ડ લાઇન આર્ગ્યુમેન્ટ કહે છે તેના દ્વારા.
- ફાઈલમાંથી જરૂરી ડેટા ઇનપુટ કરીને.
- જાવામાં ઘણા બધા ક્લાસ ઉપલબ્ધ છે, જે કી-બોર્ડ પરથી ઇનપુટ મેળવવાની સુવિધા પૂરી પાડે છે.
- કી-બોર્ડ પરથી ઇનપુટ મેળવવા નીચે મુજબની બે ટેનિકનો ઉપયોગ વધુ પ્રમાણમાં થાય છે :
- java.util પૅકેજના સ્કેનર ક્લાસ(Scanner class)નો ઉપયોગ
- java.io પૅકેજના કૉન્સોલ ક્લાસ(Console class)નો ઉપયોગ
સ્કેનર ક્લાસ (Scanner Class)
- સ્કેનર ક્લાસ એ java.util પૅકેજનો એક ભાગ છે.
- કી-બોર્ડ પરથી અથવા ફાઈલમાંથી ઇનપુટ મેળવવા માટે વિવિધ પદ્ધતિઓ પ્રદાન કરતાં java.util પૅકેજના ભાગ સ્વરૂપ ક્લાસને સ્કેનર ક્લાસ (Scanner Class) કહે છે.
- ઉપયોગકર્તાના ઇનપુટને વાંચવા માટે સ્કેનર ક્લાસનો ઉપયોગ થાય છે.
- સ્કેનર ક્લાસની વિશેષતા એ છે કે તે એ ચિહ્ન એટલે કે ડેલિમીટર(Delimeter)નો ઉપયોગ કરીને ઇનપુટ કરાતી શબ્દમાળાને ટોકન એટલે કે શબ્દોમાં વિભાજિત કરે છે. અહીં સામાન્ય રીતે ઉપયોગમાં લેવાતું ડેલિમીટર ચિહ્ન ‘‘ખાલી જગ્યા” (White space) છે.
- કન્સ્ટ્રક્ટર અને સ્કેનર ક્લાસની વિવિધ પદ્ધતિઓ નીચે દર્શાવેલ છે :
- Scanner(String str)
- Scanner(InputStream is object)
- Scanner(File fobj) throws FileNotFoundException
- સ્કેનર ક્લાસને કોઈ એક શબ્દમાળા, ફાઈલ ઑબ્જેક્ટ અથવા InputStream ઑબ્જેક્ટમાંથી બનાવી શકાય છે. → ફાઈલમાંથી કે કી-બોર્ડ પરથી વાંચવા માટેનું ઉદાહરણ :
Scannerfileinput = new Scanner(new File (“Student.dat”)); - સ્કેનર ક્લાસ સાથે ઉપલબ્ધ કેટલીક અગત્યની પદ્ધતિઓ કોષ્ટક 7માં દર્શાવેલ છે.
કોષ્ટક 7 : Scanner ક્લાસની કેટલીક પદ્ધતિઓ
પદ્ધતિ | વર્ણન |
void close( ) | સ્કેનરને બંધ કરે છે. |
String next( ) | પછીનો ટોકન પરત કરે છે. |
boolean hasNext( ) | જો ઇનપુટમાં ટોકન હશે, તો true કિંમત પરત કરે છે. |
int nextInt( ) | ઇનપુટની પછીના ટોકનને Int તરીકે સ્કેન કરે છે. |
float nextFloat( ) | ઇનપુટની પછીના ટોકનને Float તરીકે સ્કેન કરે છે. |
String nextLine( ) | ઇનપુટની પછીના ટોકનને Line તરીકે સ્કેન કરે છે. |
- ઉપયોગકર્તા પાસેથી પરસ્પર સંવાદ દ્વારા બે સંખ્યા વાંચે અને તે બે સંખ્યાનો સરવાળો દર્શાવતો પ્રોગ્રામ કોડ લિસ્ટિંગ 5માં દર્શાવેલ છે.
- કોડ લિસ્ટિંગ 5નું પરિણામ આકૃતિ 11.6માં દર્શાવેલ છે.
કોડ લિસ્ટિંગ 5 : બે સંખ્યા ઉમેરવાનો પ્રોગ્રામ
હવે, આપણે ફાઈલમાં માહિતી લખવા અને વાંચવાની ક્રિયા કરવા માટે FileInputStream અને FileOutputStream ક્લાસનો ઉપયોગ કરતો એક પ્રોગ્રામ તૈયાર કરીશું.
- ફાઈલમાંથી દરેક વિદ્યાર્થીનો ડેટા વાંચી તેના કુલ ગુણની ગણતરી કરવા માટેનો પ્રોગ્રામ કોડ લિસ્ટિંગ 6માં દર્શાવેલ છે.
- અહીં આપણે સ્કેનર ક્લાસનો ઉપયોગ કરેલ છે અને Student_no, Student_name અને 3 વિષયના ગુણની માહિતી student.dat ફાઈલમાં ઉમેરીશું.
- Student.dat ફાઈલનું માળખું નીચે દર્શાવેલ છે :
1. Akash | 45 | 65 | 55 |
2. Badal | 10 | 20 | 30 |
3. Zakir | 45 | 40 | 60 |
4. David | 65 | 50 | 75 |
આકૃતિ માં કોડ લિસ્ટિંગ 6નું આઉટપુટ દર્શાવેલ છે.
કૉન્સોલ ક્લાસ (Console Class)
- કૉન્સોલ ક્લાસ એ java.io પૅકેજનો એક ભાગ છે.
- કૉન્સોલ ક્લાસનો ઉપયોગ મુખ્યત્વે ટાઇપ કરાતા અક્ષરો સ્ક્રીન પર ન દર્શાવાય તે રીતના છૂપા સ્વરૂપે હોય ત્યારે થાય છે.
- કૉન્સોલ ક્લાસ પાસવર્ડ પ્રકારના ગુપ્ત સંકેત વાંચવા માટેની પદ્ધતિ પૂરી પાડે છે.
- પાસવર્ડ વાંચવામાં આવે છે ત્યારે ઉપયોગકર્તા દ્વારા મૉનિટર (સ્ક્રીન) પર ટાઇપ કરવામાં આવતા ઇનપુટને ગુપ્ત રાખવામાં આવે છે. એટલે કે કૉન્સોલ પર તે દર્શાવવામાં આવતા નથી અને તે પરત મૂલ્ય તરીકે અક્ષરોનો ઍરે પરત કરે છે.
- કૉન્સોલ ક્લાસ સાથે ઉપલબ્ધ કેટલીક અગત્યની પદ્ધતિઓ કોષ્ટક 8માં દર્શાવેલ છે.
કોષ્ટક 8 : Console ક્લાસની કેટલીક પદ્ધતિઓ
પદ્ધતિ | વર્ણન |
String readLine( ) | આ પદ્ધતિ કૉન્સોલ પરથી લખાણની એક જ લાઇન વાંચે છે. |
char[ ] readPassword( ) | આ પદ્ધતિ કૉન્સોલ પરથી ઇકો(Echoing)ની અસરમુક્ત અવસ્થામાં પાસવર્ડ અથવા પાસફ્રેઝ (Passphrase) વાંચે છે. |
Console printf(String format, Object args) | આ પદ્ધતિ કૉન્સોલના પરિણામની સ્ટ્રીમમાં ચોક્કસ સ્વરૂપ સાથેની શબ્દમાળા લખવા માટે ઉપયોગમાં લેવાય છે. |
- કોડ લિસ્ટિંગ 7માં યુઝરનેમ (Username) અને પાસવર્ડ (Password) વાંચવા માટેનો પ્રોગ્રામ દર્શાવેલ છે.
- આ પ્રોગ્રામનું આઉટપુટ આકૃતિ 11.8માં દર્શાવેલ છે.
- અહીં યુઝરનેમ અને પાસવર્ડ ઇનપુટ કરવા માટે બે પ્રયત્ન કરવામાં આવેલ છે.
- પ્રથમ પ્રયત્નમાં યુઝરનેમ ખોટું હોવાથી Invalid username or password પ્રકા૨નો સંદેશ દર્શાવેલ છે. અને બીજા પ્રયત્નમાં સાચો યુઝરનેમ અને પાસવર્ડ દર્શાવેલ છે. તેથી Welcome to Java Application સંદેશ દર્શાવેલ છે.
- જાવા ફાઈલનો ઉપયોગ કરીને નીચે દર્શાવ્યા મુજબના ક્લાસ અને પદ્ધતિઓ પૂરી પાડે છે :
- ઑબ્જેક્ટ સાચવવા માટેના ક્લાસ
- ઑબ્જેક્ટને પુનઃપ્રાપ્ત (Retrieve) કરવા માટેના ક્લાસ
- ફાઈલને યાદચ્છિક રીતે ઉપયોગ કરવા માટેના ક્લાસ અને પદ્ધતિઓ
- જાવામાં ક્રમિક પ્રકારની ક્રિયાઓ પાર પાડવાના બદલે સીધા n-ક્રમ પરના રેકૉર્ડ પર લઈ જવાની સુવિધા આપતી પદ્ધતિઓ પણ ઉપલબ્ધ છે.