फाइल आई / ओ हर प्रोग्रामिंग भाषा में [बंद]


127

यह एक सामान्य प्रश्न है जो सभी प्रोग्रामर के पास समय-समय पर होता है। मैं टेक्स्ट फ़ाइल से एक पंक्ति कैसे पढ़ूं? फिर अगला सवाल हमेशा यह होता है कि मैं इसे वापस कैसे लिखूं।

बेशक आप में से अधिकांश दिन के प्रोग्रामिंग में एक उच्च स्तर की रूपरेखा का उपयोग करते हैं (जो उत्तर में उपयोग करने के लिए ठीक हैं) लेकिन कभी-कभी यह जानना अच्छा होता है कि इसे निम्न स्तर पर भी कैसे किया जाए।

मैं खुद जानता हूं कि इसे कैसे करना है C, C++और Objective-C, लेकिन यह सुनिश्चित करना आसान होगा कि यह सभी लोकप्रिय भाषाओं में कैसे किया जाता है, अगर केवल हमारी मदद करने के लिए कि हम अपनी फाइल io में किस भाषा में बेहतर निर्णय ले सकते हैं। मुझे लगता है कि यह कैसे स्ट्रिंग परिवर्तन भाषाओं में अपनी किया, की तरह देखने के लिए दिलचस्प हो जाएगा: python, rubyऔर निश्चित रूप से perl

तो मैं यहाँ आंकड़ा हम एक बना सकते हैं सामुदायिक संसाधन है कि हम सभी कर सकते हैं स्टार हमारे प्रोफाइल के लिए और जब हम क्या करने की जरूरत का उल्लेख फ़ाइल आई / ओ कुछ नई भाषा में। एक्सपोज़र का उल्लेख नहीं करने के लिए, हम सभी को उन भाषाओं से मिलेंगे जो हम एक दिन के आधार पर नहीं करते हैं।

इस तरह से आपको जवाब देना होगा:

  1. " Fileio.txt " नामक एक नई टेक्स्ट फ़ाइल बनाएँ
  2. पाठ फ़ाइल में पहली पंक्ति "हैलो" लिखें।
  3. दूसरी पंक्ति "दुनिया" को पाठ फ़ाइल में जोड़ें।
  4. दूसरी पंक्ति "दुनिया" को एक इनपुट स्ट्रिंग में पढ़ें।
  5. कंसोल के लिए इनपुट स्ट्रिंग प्रिंट करें।

स्पष्टीकरण:

  • आपको यह दिखाना चाहिए कि प्रति उत्तर केवल एक प्रोग्रामिंग भाषा में ऐसा कैसे करें।
  • मान लें कि पाठ फ़ाइल पहले से मौजूद नहीं है
  • पहली पंक्ति लिखने के बाद आपको पाठ फ़ाइल को फिर से खोलने की आवश्यकता नहीं है

भाषा पर कोई विशेष सीमा नहीं। C, C++, C#, Java, Objective-Cसभी महान हैं।

आप इसे कैसे करना में पता है Prolog, Haskell, Fortran, Lisp, या Basicतो सही आगे बढ़ो करें।


9
इसके साथ समस्या यह है कि यह किसी विशिष्ट भाषा की खोजों में दिखाई नहीं देगा क्योंकि यह नहीं है, न ही यह हो सकता है, हर भाषा के साथ टैग किया गया हो।
ChrisF

21
मुझे समझ नहीं आ रहा है कि यह सवाल बंद क्यों है। क्या लोगों को जानकारी खोजने में मदद करने के लिए इस साइट का उद्देश्य नहीं है? यदि कोई जानता है कि C में कुछ (जैसे IO) कैसे करना है, और यह सीखना चाहता है कि पायथन में एक ही काम कैसे किया जाए, तो इससे उन्हें दोनों तरफ से देखने की अनुमति मिल सकती है।
थप्पड़

18
मुझे यह भी समझ में नहीं आता कि यह क्यों बंद है। ऐसा लगता है कि यह सिर्फ इसलिए है क्योंकि इसमें "... कम से कम अक्षरों में ..." शब्द शामिल नहीं है, जो बहुत मूर्खतापूर्ण है। कोड गोल्फ एक मजेदार व्यायाम है। लेकिन क्या यह वास्तव में उपयोगी है कि सभी रस्से-पत्थर के सवालों को सभी उत्तरों में संक्षिप्त, छोटे कोड में रखा गया है?
स्पेंसर नेल्सन

12
मुझे समझ में नहीं आता कि यह क्यू एंड ए साइट पर कैसे फिट होता है: कम से कम कोड गोल्फ के साथ, कुछ हद तक एक मानक मानक है जिसके द्वारा उत्तरों पर वोट दिया जाता है: सबसे कम या सबसे चतुर उत्तर में सबसे अधिक वोट मिलते हैं। इसके साथ: यह क्या है, हास्केल कितने लोग पसंद करते हैं? इस तरह के प्रश्न एक सिस्टम में हर संभव प्रकार के कंटेंट को जूता करने की कोशिश करने जैसा है जो केवल एक के लिए डिज़ाइन किया गया है। इसे संभालने के लिए बाकी इंटरनेट के साथ क्या गलत है?

11
क्यों यह अच्छी तरह से काम नहीं करता है। प्रत्येक दृष्टिकोण के पेशेवरों और विपक्षों के बारे में कोई जानकारी नहीं है (क्या भाषाएं केवल एक ही तरीके का समर्थन करती हैं?)। प्रत्येक भाषा में व्यापार बंद और गहन मुद्दों की कोई चर्चा नहीं। सीमित दायरे का तात्पर्य यह है कि "हर भाषा में" प्रश्न में एक अलग "बाजीगर" की आवश्यकता है। और सभी के अधिकांश में प्रत्येक उत्तर की गुणवत्ता का कोई सामुदायिक मॉडरेशन नहीं है। जब लोग उन पर मतदान कर रहे हैं तो मैं कोई संयम क्यों नहीं कहता? क्योंकि प्रत्येक भाषा के लिए केवल एक ही उत्तर होना चाहिए, और लोग अपने क्षेत्र में कई विकल्प देखने के लिए पर्याप्त उत्तर नहीं पढ़ेंगे।
dmckee --- पूर्व-मध्यस्थ ने बिल्ली का बच्चा

जवाबों:


48

अजगर ३

with open('fileio.txt', 'w') as f:
   f.write('hello')
with open('fileio.txt', 'a') as f:
   f.write('\nworld')
with open('fileio.txt') as f:
   s = f.readlines()[1]
print(s)

स्पष्टीकरण

  • readlines () फ़ाइल में सभी लाइनों की एक सूची देता है । इसलिए, रीडलाइन () के इनवोकेशन से फ़ाइल की प्रत्येक पंक्ति को पढ़ने का परिणाम मिलता है। उस विशेष मामले में रीडलाइन () का उपयोग करना ठीक है क्योंकि हमें पूरी फाइल को वैसे भी पढ़ना है (हम इसकी अंतिम पंक्ति चाहते हैं)। लेकिन अगर हमारी फाइल में कई लाइनें हैं और हम सिर्फ इसकी nth लाइन प्रिंट करना चाहते हैं, तो पूरी फाइल को पढ़ना अनावश्यक है। यहाँ पायथन में किसी फ़ाइल की nth लाइन प्राप्त करने के कुछ बेहतर तरीके दिए गए हैं: पायथन 3 में xreadlines () का क्या विकल्प है?

  • यह कथन के साथ क्या है? स्टेटमेंट के साथ एक कोड ब्लॉक शुरू होता है, जहाँ आप चर f को कॉल से लौटी हुई स्ट्रीम ऑब्जेक्ट () के रूप में उपयोग कर सकते हैं । जब ब्लॉक समाप्त होता है, तो अजगर स्वचालित रूप से f.close () कॉल करता है। यह गारंटी देता है कि जब आप ब्लॉक से बाहर निकलते हैं या जब आप ब्लॉक से बाहर निकलते हैं (भले ही आप इसे अनचाहे अपवाद से बाहर निकलते हों) तो फ़ाइल बंद हो जाएगी। आप स्पष्ट रूप से f.close () कॉल कर सकते हैं, लेकिन क्या होगा यदि आपका कोड अपवाद उठाता है और आपको f.close () कॉल नहीं मिलती है? इसलिए कथन के साथ उपयोगी है।

  • आपको प्रत्येक ऑपरेशन से पहले फ़ाइल को फिर से खोलने की आवश्यकता नहीं है। आप ब्लॉक के साथ पूरे कोड को एक के अंदर लिख सकते हैं।

    with open('fileio.txt', 'w+') as f:
        f.write('hello')
        f.write('\nworld')
        s = f.readlines()[1]
    print(s)
    

    मैंने तीन ऑपरेशनों के बीच अंतर को समझने के लिए ब्लॉकों का उपयोग किया: लिखने (मोड 'डब्ल्यू'), एपेंड (मोड 'ए'), रीड (मोड 'आर', डिफ़ॉल्ट)।


19
मुझे नहीं लगता कि किसी को कभी भी readlines()[1]उदाहरण कोड में लिखना चाहिए । इस स्थिति में आप यह जान सकते हैं कि फ़ाइल में केवल दो लाइनें हैं, लेकिन कोई अन्य व्यक्ति यह मानते हुए कि यह एक अच्छा समाधान है, इसे एक मिलियन-लाइन फ़ाइल पर आज़मा सकते हैं और इसे बहुत आश्चर्यचकित कर सकते हैं।
पोर्कुलस

14
@Porculus readlines () के साथ हम फ़ाइल में सभी लाइनों के माध्यम से नहीं जाते हैं। यह अजगर है। 3. रीडलाइन () एक पुनरावृत्तिकर्ता (सूची नहीं) देता है। इसलिए फ़ाइल की केवल पहली दो पंक्तियों को पढ़ा जाएगा। यह अजगर 2 में xreadlines () के समान है (जो अजगर 3 में मौजूद नहीं है)।
सनकाइल

7
@snakile: क्या आप readlines()रिटर्न इट्रेटर के समर्थन में कुछ का हवाला दे सकते हैं (सूची नहीं) बस एक नोट: आप आम तौर पर एक इटेरेटर को इंडेक्स नहीं कर सकते।
साइलेंटगॉस्ट

8
@SilentGhost मैं "डाइव इन पाइथन 3" उद्धृत कर रहा हूं: "रीडलाइन () विधि अब एक इट्रेटर लौटाता है, इसलिए यह उतना ही कुशल है जितना कि xreadlines () पायथन 2 में था"। इस कथन को इसमें खोजें: diveintopython3.org/porting-code-to-python-3-with-2to3.html । दूसरा, अजगर 3 में आप एक पुनरावृत्त को अनुक्रमित कर सकते हैं। टाइप रेंज (10) [4] शेल में (रेंज () भी पायथन 3 में पायथन 2 के विपरीत एक पुनरावृत्ति देता है जहां रेंज () एक सूची देता है)। ध्यान दें कि रेंज (N) [i] O (i) में की गई है, O (1) और O (N) नहीं।
sankile

5
@snakile: आपकी टिप्पणी कई स्तरों पर गलत है। सबसे पहले, रीडलाइन पायथन 3 में एक सूची देता है (इसे देखें और देखें)। तो दिया गया कोड पूरी फाइल को पढ़ेगा। दूसरा, पुनरावृत्तियों को पायथन 2 या 3 में अनुक्रमित नहीं किया जा सकता है। rangeऑब्जेक्ट को अनुक्रमण के लिए विशेष समर्थन है, जो ओ (1) में किया जाता है।
17

242

LOLCODE

चश्मा कम से कम कहने के लिए स्केच है, लेकिन मैंने सबसे अच्छा किया जो मैं कर सकता था। नीचा दिखाने शुरू करो! :) मुझे अभी भी यह एक मजेदार व्यायाम लगता है।

HAI
CAN HAS STDIO?
PLZ OPEN FILE "FILEIO.TXT" ITZ "TehFilez"?
    AWSUM THX
        BTW #There is no standard way to output to files yet...
        VISIBLE "Hello" ON TehFilez
        BTW #There isn't a standard way to append to files either...
        MOAR VISIBLE "World" ON TehFilez
        GIMMEH LINES TehLinez OUTTA TehFilez
        I HAS A SecondLine ITZ 1 IN MAH TehLinez
        VISIBLE SecondLine
    O NOES
        VISIBLE "OH NOES!!!"
KTHXBYE

28
मुझे नहीं लगता कि इस संपत्ति का शाब्दिक अर्थ होने के लिए कोई अन्य भाषा है, मुझे, ... लोल।
इयोनू जी। स्टेन स्टेन

85
क्या यह दुखद है कि मुझे लगता है कि मैंने जो कुछ देखा है, उससे कहीं अधिक पठनीय है?
जोएल

13
यह एक प्राकृतिक भाषा की तरह कितना अंतर महसूस कर रही है।
अभिनव सरकार

19
यह कहते हुए कि आप उम्मीद करते हैं कि एसओ पर उतार-चढ़ाव की गारंटी है क्योंकि रिवर्स मनोविज्ञान एक प्रोग्रामर के लिए एक प्रतिवर्त क्रिया है।
ब्रॉक वुल्फ

13
PLZ? / AWSUM THX / O NOES सिर्फ भयानक है। यह मेरे लिए थोड़े सर्वशक्तिमान लगता है।
केल्विन १६०२

43

मस्तिष्क *** कश्मीर

,------------------------------------------------>,------------------------------------------------>,------------------------------------------------>[-]+++++++++>[-]+++++++++>[-]+++++++++<<<<<[>>>>>>+>>>+<<<<<<<<<-]>>>>>>>>>[<<<<<<<<<+>>>>>>>>>-]<<<<<<<<[>>>>>>+>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]<<<<<<<[>>>>>>+>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]>>[-]<<<<<<<<[>>>>>>+>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]<<<<<[>>>>+>+<<<<<-]>>>>>[<<<<<+>>>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>[<<<<<<<<->>>->>>>>[-]<<<<<<<<[>>>>>>+>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]<<<<<[>>>>+>+<<<<<-]>>>>>[<<<<<+>>>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>][-]<<<<<<<[>>>>>+>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>[<<<<<<<->>>->>>>[-]<<<<<<<[>>>>>+>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>][-]<<<<<<[>>>>+>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>>-]<<<[>>+>+<<<-]>>>[<<<+>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>[<<<<<<->>>->>>[-]<<<<<<[>>>>+>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>>-]<<<[>>+>+<<<-]>>>[<<<+>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>]<[-]+<[-]+<<<<<<[>>>>>>[-]<<<<<<[-]]>>>>>>[[-]+<<<<<[>>>>>[-]<<<<<[-]]>>>>>[[-]+<<<<[>>>>[-]<<<<[-]]>>>>[[-]+<<<[>>>[-]<<<[-]]>>>[[-]+<<[>>[-]<<[-]]>>[[-]+<[>[-]<[-]]>[[-]+++++++++++++++++++++++++++++++++++++++++++++++++.-...>[-]<[-]]<>[-]]<<>>[-]]<<<>>>[-]]<<<<>>>>[-],------------------------------------------------>,------------------------------------------------>,------------------------------------------------>[-]+++++++++>[-]+++++++++>[-]+++++++++<<<<<[>>>>>>+>>>+<<<<<<<<<-]>>>>>>>>>[<<<<<<<<<+>>>>>>>>>-]<<<<<<<<[>>>>>>+>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]<<<<<<<[>>>>>>+>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]>>[-]<<<<<<<<[>>>>>>+>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]<<<<<[>>>>+>+<<<<<-]>>>>>[<<<<<+>>>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>[<<<<<<<<->>>->>>>>[-]<<<<<<<<[>>>>>>+>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]<<<<<[>>>>+>+<<<<<-]>>>>>[<<<<<+>>>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>][-]<<<<<<<[>>>>>+>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>[<<<<<<<->>>->>>>[-]<<<<<<<[>>>>>+>>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>][-]<<<<<<[>>>>+>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>>-]<<<[>>+>+<<<-]>>>[<<<+>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>[<<<<<<->>>->>>[-]<<<<<<[>>>>+>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>>-]<<<[>>+>+<<<-]>>>[<<<+>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>]<[-]+<[-]+<<<<<<[>>>>>>[-]<<<<<<[-]]>>>>>>[[-]+<<<<<[>>>>>[-]<<<<<[-]]>>>>>[[-]+<<<<[>>>>[-]<<<<[-]]>>>>[[-]+<<<[>>>[-]<<<[-]]>>>[[-]+<<[>>[-]<<[-]]>>[[-]+<[>[-]<[-]]>[[-]+++++++++++++++++++++++++++++++++++++++++++++++++.-...>[-]<[-]]<>[-]]<<>>[-]]<<<>>>[-]]<<<<>>>>[-]]<<<<<>>>>>[-]]<<<<<<>>>>>>>[<<<<<<<<[>>>>>>+>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]>[-]++++++++++<<+<<<<<<+>>>>>>>>>>>[-]<<<<<[>>>+>>+<<<<<-]>>>>>[<<<<<+>>>>>-]<<<[>>+>+<<<-]>>>[<<<+>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>[<<<<<->>->>>[-]<<<<<[>>>+>>+<<<<<-]>>>>>[<<<<<+>>>>>-]<<<[>>+>+<<<-]>>>[<<<+>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>]<<<<[-]+<[>[-]<[-]]>[[-]+>[<[-]>[-]]<[<<<<<<<[-]<+>>>>>>>>[-]]><[-]]<<<<<<<<[>>>>>>+>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]>[-]++++++++++>>>[-]<<<<<<[>>>>+>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>>-]<<<[>>+>+<<<-]>>>[<<<+>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>[<<<<<<->>>->>>[-]<<<<<<[>>>>+>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>>-]<<<[>>+>+<<<-]>>>[<<<+>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>]<<<<[-]+<<[>>[-]<<[-]]>>[[-]+>[<[-]>[-]]<[<<<<<<<<[-]<+>>>>>>>>>[-]]><[-]]<<<<<<<<<++++++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++++++++++++++.>>>>>>>>[-]]]<<<<<>>>>>[-]]<<<<<<>>>>>>>[<<<<<<<<[>>>>>>+>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]>[-]++++++++++<<+<<<<<<+>>>>>>>>>>>[-]<<<<<[>>>+>>+<<<<<-]>>>>>[<<<<<+>>>>>-]<<<[>>+>+<<<-]>>>[<<<+>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>[<<<<<->>->>>[-]<<<<<[>>>+>>+<<<<<-]>>>>>[<<<<<+>>>>>-]<<<[>>+>+<<<-]>>>[<<<+>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>]<<<<[-]+<[>[-]<[-]]>[[-]+>[<[-]>[-]]<[<<<<<<<[-]<+>>>>>>>>[-]]><[-]]<<<<<<<<[>>>>>>+>>+<<<<<<<<-]>>>>>>>>[<<<<<<<<+>>>>>>>>-]>[-]++++++++++>>>[-]<<<<<<[>>>>+>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>>-]<<<[>>+>+<<<-]>>>[<<<+>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>[<<<<<<->>>->>>[-]<<<<<<[>>>>+>>+<<<<<<-]>>>>>>[<<<<<<+>>>>>>-]<<<[>>+>+<<<-]>>>[<<<+>>>-][-]<<[>>[-]<[>[-]+<[-]]<[-]]>[-]>]<<<<[-]+<<[>>[-]<<[-]]>>[[-]+>[<[-]>[-]]<[<<<<<<<<[-]<+>>>>>>>>>[-]]><[-]]<<<<<<<<<++++++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++++++++++++++.>>>>>>>>[-]]

26
क्या आपने '-' को याद किया? ;)
एडेन बेल

2
ओह प्रयास। सिर्फ रिकॉर्ड के लिए, लिखने में कितना समय लगा?
रिडिडेल

और आप कई लाइनों पर विभाजित नहीं कर सकते हैं? सर्वश्रेष्ठ भाषा कभी
TheIronKnuckle

42

कोबोल

चूँकि कोई और नहीं था ......

IDENTIFICATION DIVISION.
PROGRAM-ID.  WriteDemo.
AUTHOR.  Mark Mullin.
* Hey, I don't even have a cobol compiler

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT StudentFile ASSIGN TO "STUDENTS.DAT"
        ORGANIZATION IS LINE SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD TestFile.
01 TestData.
   02  LineNum        PIC X.
   02  LineText       PIC X(72).

PROCEDURE DIVISION.
Begin.
    OPEN OUTPUT TestFile
    DISPLAY "This language is still around."

    PERFORM GetFileDetails
    PERFORM UNTIL TestData = SPACES
       WRITE TestData 
       PERFORM GetStudentDetails
    END-PERFORM
    CLOSE TestFile
    STOP RUN.

GetFileDetails.
    DISPLAY "Enter - Line number, some text"
    DISPLAY "NXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    ACCEPT  TestData.

2
यह शुद्ध awesomeness +1 के लिए 1 मिलियन से कम बार मतदान नहीं किया जाना चाहिए
ब्रॉक वुल्फ

1
+1 के लिए "यह भाषा अभी भी आसपास है।" = डी
गायबफैक्टर

3
घर में यह प्रयास करते समय सावधान रहें। आपके कोबोल कंपाइलर को ये आधुनिक परिवर्तनशील लंबाई वाली लाइनें पसंद नहीं आ सकती ...
Stephan Eggermont

हां, यह कुछ रस्टी ओल की यादें वापस लाता है। मुझे नहीं लगता कि यह आवश्यकताओं को पूरा करता है ...
EvilTeach

मैं अभी AcuCOBOL में कोड लिख रहा हूँ! वैसे, "I / O" का "I" भाग कहां है?
बुग्गाबिल

39

हास्केल

main :: IO ()
main = let filePath = "fileio.txt" in
       do writeFile filePath "hello"
          appendFile filePath "\nworld"
          fileLines <- readFile filePath
          let secondLine = (lines fileLines) !! 1
          putStrLn secondLine

यदि आप किसी फ़ाइल को पढ़ना / लिखना चाहते हैं:

main :: IO ()
main = readFile "somefile.txt" >>= writeFile "someotherfile.txt" 

7
आह 'सर्वशक्तिमान' हास्केल। आपके योगदान के लिए धन्यवाद :)
ब्रॉक वुल्फ

3
@ एंड्रियास रिब्रांड मुझे लगभग यकीन है कि वह '
बी

4
हास्केल में बुनियादी I / O के लिए कई अन्य दृष्टिकोण हैं जो कुछ प्रकार के एप्लिकेशन करने के बाद एक बार हास्केल में उपयोगी / महत्वपूर्ण हो जाते हैं। कैबल / हैकेज पर पाठ और बाइटस्ट्रिंग पैकेज आपको विभिन्न एनकोडिंग के साथ सौदा करते हैं, और विभिन्न पुनरावृति शैली के पैकेज जैसे कि इटेरेट और एनुमरेट वृद्धिशील io करने के लिए "सर्वश्रेष्ठ ज्ञात अमूर्त" का प्रतिनिधित्व करते हैं। इसके अलावा पारसेक और वृद्धिशील परिश्रम भी महत्वपूर्ण हैं, केवल अटोपार्सिक परिवाद को रोककर। Haskellers ने io डिजाइन विकल्पों की खोज के लिए बहुत गहन दृष्टिकोण अपनाया है। गैर-उल्लेखनीय उदाहरणों में आलसी io और निरंतरता शामिल हैं
कार्टर ताज़ियो शॉनवल्ड

4
Yuji: मूल रूप से, धोखा देकर। हस्केल एक शुद्ध कार्यात्मक भाषा है, कुछ भी प्रकार को छोड़करIO a , जिसमें साइड इफेक्ट्स के लिए विशेष संकलक समर्थन है। (पवित्रता कहीं और संरक्षित है क्योंकि जो कुछ भी करता है या एक साइड इफेक्ट का निरीक्षण करता है वह प्रकार का है IO a, इसलिए टाइप सिस्टम यह सुनिश्चित करता है कि आपके कार्यक्रम का बाकी हिस्सा शुद्ध रहता है।)
सैम स्टोक्स

4
ऐसा होता है कि IOयह एक सन्यासी है, लेकिन इसलिए इसे साइड इफेक्ट करने की अनुमति नहीं है। एक सन्यासी होने के नाते, जो आपको वह अनिवार्य दिखने वाला वाक्यविन्यास लिखने देता है: यह भी सुनिश्चित करता है (विशेष भाषा समर्थन के साथ) साइड इफेक्ट एक समझदार क्रम में होता है, इसलिए आप इसे लिखने से पहले फाइल से नहीं पढ़ते हैं, आदि। ।
सैम स्टोक्स

35

डी

module d_io;

import std.stdio;


void main()
{
    auto f = File("fileio.txt", "w");
    f.writeln("hello");
    f.writeln("world");

    f.open("fileio.txt", "r");
    f.readln;
    auto s = f.readln;
    writeln(s);
}

10
+1, C ++ संस्करण की तुलना में बहुत अधिक सुंदर और पठनीय! मैं एक ऐसे दिन का सपना देखता हूं जब डी पूरी तरह से सी और सी ++ की जगह ले। :-)
लापताफेसर

10
अच्छा लगा। शायद मुझे किसी दिन डी सीखना चाहिए।
हेल्परमेथोड

34

माणिक

PATH = 'fileio.txt'
File.open(PATH, 'w') { |file| file.puts "hello" }
File.open(PATH, 'a') { |file| file.puts "world" }
puts line = File.readlines(PATH).last

2
+1 अच्छा, लेकिन सख्त होने के लिए, आप इनपुट को कंसोल में लिखने से पहले उसे वेरिएबल में नहीं डालें।
Lasse Espeholt

3
@lasseespeholt, आप सही कह रहे हैं। मैंने ठीक कर दिया।
वेन कॉनराड

5
वार्निश को अपरकेस करने और 'पथ' कहने का कोई कारण नहीं है। सिर्फ 'पथ' कहो।
ओटीजेड

2
@otz यह एक स्थिर है। वह इसे 'पथ' कह सकते थे, हालांकि रूबी में एक निरंतरता को एक बड़े अक्षर से शुरू करना पड़ता है।
सिरुपेंस

1
@ थोमस अहले: File.openएक ब्लॉक का उपयोग करते समय , फ़ाइल खोली जाती है, ब्लॉक में पास की जाती है, और फिर अपने आप बंद हो जाती है।
माचिस

33

सी#

string path = "fileio.txt";
File.WriteAllLines(path, new[] { "hello"}); //Will end it with Environment.NewLine
File.AppendAllText(path, "world");

string secondLine = File.ReadLines(path).ElementAt(1);
Console.WriteLine(secondLine);

File.ReadLines(path).ElementAt(1)केवल .Net 4.0 है, विकल्प File.ReadAllLines(path)[1]एक सरणी में पूरी फ़ाइल को पार्स करता है।


1
C # में इसकी कमी है। योगदान के लिए धन्यवाद
ब्रॉक वुल्फ

13
नोट:
File.ReadLines

5
एक अप्रिय दिखने वाली वाक्य रचना C # में क्या है
Aiden Bell

3
@ लीड बेल: किस भाषा के सापेक्ष?
zfedoran

2
@ आइडेन बेल - यह उत्तर पठनीय पर आत्मनिर्भर होने की कोशिश कर रहा है। C # में एक ही चीज़ को प्राप्त करने के बहुत सारे "अच्छे" तरीके हैं। अधिक यथार्थवादी उदाहरणों के लिए dotnetperls.com/file-handling देखें ।
डैन डिप्लो

29

ANSI सी

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

int /*ARGSUSED*/
main(char *argv[0], int argc) {
   FILE *file;
   char buf[128];

   if (!(file = fopen("fileio.txt", "w")) {
      perror("couldn't open for writing fileio.txt");
      exit(1);
   }

   fprintf(file, "hello");
   fclose(file);

   if (!(file = fopen("fileio.txt", "a")) {
      perror("couldn't opened for appening fileio.txt");
      exit(1);
   }

   fprintf(file, "\nworld");
   fclose(file);

   if (!(file = fopen("fileio.txt", "r")) {
      perror("couldn't open for reading fileio.txt");
      exit(1);
   }

   fgets(buf, sizeof(buf), file);
   fgets(buf, sizeof(buf), file);

   fclose(file);

   puts(buf);

   return 0;
}

अच्छा उत्तर। योगदान देने के लिए धन्यवाद +1
ब्रुक वुल्फ

आप दो बार (क्यों) कॉल करते हैं?
kirk.burleson

2
क्योंकि दूसरी पंक्ति वह है जिसे हम stdout
JeremyP

1
#include <stdio.h> int main (शून्य) {फ़ाइल फ़ाइल; char buf [128]; file = fopen ("fileio.txt", "w"); अगर (फ़ाइल) गोटो त्रुटि; fputs ("हैलो \ n", फ़ाइल); fflush (फ़ाइल); fputs ("world \ n", फ़ाइल); fclose (फ़ाइल); file = fopen ("fileio.txt", "r"); अगर (फ़ाइल) गोटो त्रुटि; फिट्स (buf, sizeof (buf), फ़ाइल); / 'हैलो' छोड़ें / फ़्यूज़ (buf, sizeof (buf), फ़ाइल); / 'शब्द' प्राप्त करें * / fclose (फ़ाइल); fputs (buf, stdout); वापसी 0; त्रुटि: fputs ("फ़ाइल नहीं खोल सका \ n", stderr); वापसी 1; }
फेलिपक

ओरिजिनल सी पोस्ट में अच्छी क्लीन कोडिंग (बहुत सारी अच्छी एरर चेकिंग), (जो कुछ हद तक निकल जाती है)।
xagyg

29

शेल स्क्रिप्ट (UNIX)

#!/bin/sh
echo "hello" > fileio.txt
echo "world" >> fileio.txt
LINE=`sed -ne2p fileio.txt`
echo $LINE

वास्तव में sed -n "2p"भाग दूसरी पंक्ति को प्रिंट करता है, लेकिन प्रश्न दूसरी पंक्ति को एक चर में संग्रहीत करने के लिए कहता है और फिर मुद्रित होता है, इसलिए :)


9
मुझे पता नहीं क्यों, लेकिन मुझे यह पसंद है :)
फेडेरिको क्लेज़ कुल्लोका

बेशक यह मायने रखता है। अच्छा जवाब और धन्यवाद योगदान के लिए +1
ब्रॉक वुल्फ

मानक को / dev / null से बाहर क्यों नहीं भेजा जा रहा है?
गुमबो

केवल शेल बिल्डिंस का उपयोग करने के लिए कुछ हद तक सरल और तेज़, संस्करण है, (जैसा कि आह्वान करने के लिए एक अलग प्रक्रिया को बंद करने के लिए विरोध किया गया है sed), यहाँ: stackoverflow.com/questions/3538156/…
ब्रायन कैंपबेल

@ गुंबो, फिर दूसरी लाइन कैसे मिलेगी? चर में LINE=`foo`आउटपुट कैप्चर करता है । fooLINE
स्ट्रगल

27

लिनक्स पर x86 असेंबलर (NASM)

मैंने 7 साल में एसम को छुआ नहीं है, इसलिए मुझे इसे एक साथ हैक करने के लिए Google का उपयोग करना पड़ा, लेकिन फिर भी, यह काम करता है;) मुझे पता है कि यह 100% सही नहीं है, लेकिन हे: डी

ठीक है, यह काम नहीं करता है। क्षमा करें, यह डटकर। हालांकि यह worldअंत में प्रिंट करता है , यह इसे फ़ाइल से प्रिंट नहीं करता है, लेकिन ecxजिसमें से लाइन 27 पर सेट है।

section .data
hello db 'hello',10
helloLen equ $-hello
world db 'world',10
worldLen equ $-world
helloFile db 'hello.txt'

section .text
global _start

_start:
mov eax,8
mov ebx,helloFile
mov ecx,00644Q
int 80h

mov ebx,eax

mov eax,4
mov ecx, hello
mov edx, helloLen
int 80h

mov eax,4
mov ecx, world
mov edx, worldLen
int 80h

mov eax,6
int 80h

mov eax,5
mov ebx,helloFile
int 80h

mov eax,3
int 80h

mov eax,4
mov ebx,1
int 80h

xor ebx,ebx
mov eax,1
int 80h

प्रयुक्त सन्दर्भ: http://www.cin.ufpe.br/~if817/arquivos/asmtut/quickstart.html

http://bluemaster.iu.hio.no/edu/dark/lin-asm/syscalls.html

http://www.digilife.be/quickreferences/QRC/LINUX%20System%20Call%20Quick%20Reference.pdf


क्या आप इसे सही करने जा रहे हैं ताकि यह 100% काम करे? यदि नहीं, तो इसे हटा दें ताकि कार्यशील संस्करण इसकी जगह ले सके।
kirk.burleson

4
यह किस तरह की मज़ेदार बात है कि C में उदाहरण, जिसे उच्च स्तर की भाषा माना जाता है, यह लगभग एक जैसा है ... =)
जानी हार्टिकेनन

1
@ जानी: लेकिन कम से कम यह समझना कुछ आसान है।
sbi

सोचा यह पहली बार DOS के लिए था :)
mlvljr

21

जावास्क्रिप्ट - नोड.जेएस

सबसे पहले, नेस्टेड कॉलबैक के बहुत सारे।

var fs   = require("fs");
var sys  = require("sys");
var path = "fileio.txt";

fs.writeFile(path, "hello", function (error) {
    fs.open(path, "a", 0666, function (error, file) {
        fs.write(file, "\nworld", null, "utf-8", function () {
            fs.close(file, function (error) {
                fs.readFile(path, "utf-8", function (error, data) {
                    var lines = data.split("\n");
                    sys.puts(lines[1]);
                });
            });
        });
    });
});

थोड़ा क्लीनर:

var writeString = function (string, nextAction) {
    fs.writeFile(path, string, nextAction);
};

var appendString = function (string, nextAction) {
    return function (error, file) {
        fs.open(path, "a", 0666, function (error, file) {
            fs.write(file, string, null, "utf-8", function () {
                fs.close(file, nextAction);
            });
        });
    };
};

var readLine = function (index, nextAction) {
    return function (error) {
        fs.readFile(path, "utf-8", function (error, data) {
            var lines = data.split("\n");
            nextAction(lines[index]);
        });
    };
};

var writeToConsole = function (line) {
    sys.puts(line);
};

writeString("hello", appendString("\nworld", readLine(1, writeToConsole)));

@ आयन: आपके कई योगदानों के लिए धन्यवाद +1
ब्रुक

4
@ क्या यह ब्राउज़रों में पाया जाने वाला जेएस नहीं है। मेरा मतलब है, वाक्यात्मक और शब्दार्थ, यह एक ही जेएस है, बस मानक पुस्तकालय अलग है। मैंने node.jsमंच के stdlib का उपयोग किया । देखें नोड्स.ओआरजी
जी। स्टेन स्टेन

5
यह कोड निरंतरता के लिए रो रहा है। मैं इसके आंसू सुन सकता हूं।
मैट

2
क्या यह हास्यास्पद नहीं है कि लाइनों की संख्या लगभग एएसएम समाधान के नीचे मेल खा रही है?
kizzx2

1
@ मैट हां, निरंतरता, या भिक्षु यहां भी मदद करेंगे।
मार्टिगन

21

आम लिस्प

(defun main ()
  (with-open-file (s "fileio.txt" :direction :output :if-exists :supersede)
    (format s "hello"))
  (with-open-file (s "fileio.txt" :direction :io :if-exists :append)
    (format s "~%world")
    (file-position s 0)
    (loop repeat 2 for line = (read-line s nil nil) finally (print line))))

1
"लिस्प" नामक भाषा के लिए इसमें बहुत अधिक "s" अक्षर शामिल होने चाहिए :)
iwasrobbed

18

शक्ति कोशिका

sc fileio.txt 'hello'
ac fileio.txt 'world'
$line = (gc fileio.txt)[1]
$line

3
यह अच्छा और साफ है। Yay शक्तियां।
जय बज़ुजी

मैं उद्धृत करने के बारे में आपके तर्क से सहमत हूं। मुझे हटाने का कारण यह था कि मुझे महसूस हुआ कि यह स्क्रिप्ट वास्तव में कॉम्पैक्ट होने के लिए शीर्ष पर है इसलिए मैं इसे और भी छोटा करना चाहता था - लेकिन हमने इसे स्पष्ट होने दिया :)। और समझ में आने के gcबजाय का उपयोग cat:-) get-aliasमुझे catपहले दिया (मैं PowerShell का उपयोग नहीं कर रहा हूँ)।
लास एस्पेहोल्ट

4
धिक्कार है, क्या कुछ कम है ??
एफएन

18

शैल लिपि

यहाँ केवल शेल कमांड का उपयोग करते हुए शेल स्क्रिप्ट है, बजाय बाहरी कमांड जैसे sedया को लागू करने केtail पिछले प्रतिक्रियाओं ने किया है है।

#!/bin/sh

echo hello > fileio.txt             # Print "hello" to fileio.txt
echo world >> fileio.txt            # Print "world" to fileio.txt, appending
                                    # to what is already there
{ read input; read input; } < fileio.txt  
                                    # Read the first two lines of fileio.txt,
                                    # storing the second in $input
echo $input                         # Print the contents of $input

महत्वपूर्ण शेल स्क्रिप्ट लिखते समय, जितना संभव हो उतना निर्मित उपयोग करने की सलाह दी जाती है, क्योंकि एक अलग प्रक्रिया को पैदा करना धीमा हो सकता है; मेरी मशीन पर एक त्वरित परीक्षण से,sed समाधान उपयोग करने की तुलना में लगभग 20 गुना धीमा है read। यदि आप कॉल करने जा रहे हैंsed एक बार , तो इस मामले में, यह वास्तव में बहुत ज्यादा मायने नहीं रखता है, क्योंकि यह आपको नोटिस करने की तुलना में अधिक तेज़ी से निष्पादित करेगा, लेकिन यदि आप इसे सैकड़ों या हजारों बार निष्पादित करने जा रहे हैं, तो यह हो सकता है जोड़ें।

सिंटैक्स से अपरिचित लोगों के लिए, {और } वर्तमान शेल वातावरण में आदेशों की एक सूची निष्पादित करें (जैसा कि एक उपसमूह के विपरीत (और )जो एक उपधारा है; हमें वर्तमान शेल वातावरण में संचालन करने की आवश्यकता है, इसलिए हम बाद में चर के मूल्य का उपयोग कर सकते हैं) । हमें उन दोनों को एक ही इनपुट स्ट्रीम पर संचालित करने के लिए कमांड को एक साथ समूहित करने की आवश्यकता है, जिससे पुनर्निर्देशन करके बनाया गया है fileio.txt; यदि हम बस भागते हैं read < fileio.txt; read input < fileio.txt, तो हम बस पहली पंक्ति प्राप्त करेंगे, क्योंकि फाइल बंद हो जाएगी और दोनों कमांड के बीच फिर से खुल जाएगी। शेल सिंटैक्स के एक idiosyncrasy के कारण ( {और} मेटाच्रेकर्स के विपरीत आरक्षित शब्द), हमें अलग करने की आवश्यकता है {और}रिक्त स्थान के साथ आदेशों के बाकी से, और एक के साथ आदेशों की सूची को समाप्त करें ;

readनिर्मित एक तर्क चर के नाम में पढ़ने के लिए के रूप में लेता है। यह इनपुट की एक पंक्ति का उपभोग करता है, व्हॉट्सएप द्वारा इनपुट को तोड़ता है (तकनीकी रूप से, यह इसे सामग्री की सामग्री के अनुसार तोड़ता है $IFS, जो एक अंतरिक्ष वर्ण के लिए चूकता है, जहां एक अंतरिक्ष वर्ण का अर्थ है इसे किसी भी स्थान, टैब या न्यूलाइन पर विभाजित करें), असाइन करता है क्रम में दिए गए चर नामों के लिए प्रत्येक शब्द, और अंतिम चर के लिए शेष रेखा असाइन करता है। चूंकि हम सिर्फ एक चर की आपूर्ति कर रहे हैं, यह सिर्फ उस चर में पूरी लाइन डालता है। हम $inputचर का पुन: उपयोग करते हैं, क्योंकि हमें परवाह नहीं है कि पहली पंक्ति में क्या है (यदि हम बैश का उपयोग कर रहे हैं तो हम केवल एक चर नाम की आपूर्ति नहीं कर सकते हैं, लेकिन पोर्टेबल होने के लिए, आपको हमेशा कम से कम एक नाम की आपूर्ति करनी चाहिए)।

ध्यान दें कि जब आप एक समय में एक लाइनों को पढ़ सकते हैं, जैसे मैं यहां करता हूं, तो बहुत अधिक सामान्य पैटर्न एक लूप में इसे लपेटना होगा:

while read foo bar baz
do
  process $foo $bar $baz
done < input.txt

3
बहुत अच्छा। मैंने कुछ सीखा (यद्यपि अस्थायी रूप से)।
पोटेटोसवर्टर 4

आपके योगदान के लिए धन्यवाद ब्रायन।
ब्रॉक वुल्फ

पूरी तरह से बीमार! अच्छे तरीके से :-)
हेल्परमेथोड

18

Clojure

(use '[clojure.java.io :only (reader)])

(let [file-name "fileio.txt"]
  (spit file-name "hello")
  (spit file-name "\nworld" :append true)
  (println (second (line-seq (reader file-name)))))

या समकक्ष रूप से, थ्रेडिंग मैक्रो का उपयोग करना ->(जिसे पैरेन रिमूवर के रूप में भी जाना जाता है):

(use '[clojure.java.io :only (reader)])

(let [file-name "fileio.txt"] 
  (spit file-name "hello") 
  (spit file-name "\nworld" :append true) 
  (-> file-name reader line-seq second println))

1
डब्ल्यूटीएफ, पिछले 50 वर्षों से लगभग किसी ने लिस्प / स्कीम चट्टानों को नहीं कहा है!
इओनु

11
रुको, spitवास्तव में राइट-टू-फ़ाइल फ़ंक्शन का नाम है?
सैम स्टोक्स

4
Clojure निश्चित रूप से रॉक नहीं करता है!
kirk.burleson

1
@ [सैम स्टोक्स] कोर में एक फ़ंक्शन है जिसे स्लरप कहा जाता है जो एक पूरी फ़ाइल को एक स्ट्रिंग में पढ़ता है और इसे वापस करता है। थूक सटीक विपरीत करता है। मुद्दा क्या है? लाइन-सीक जैसे अन्य कार्य हैं, जो अलग-अलग तरीकों से समान कार्य करते हैं।
रेने

4
@ kirk.burleson जावा से अधिक चट्टानें, निश्चित रूप से। :)
रेने


16

बेसिक

मैंने लगभग 10 वर्षों में BASIC का उपयोग नहीं किया है, लेकिन इस प्रश्न ने मुझे अपने ज्ञान को जल्दी से ब्रश करने का एक कारण दिया। :)

OPEN "fileio.txt" FOR OUTPUT AS 1
PRINT #1, "hello"
PRINT #1, "world"
CLOSE 1

OPEN "fileio.txt" FOR INPUT AS 1
LINE INPUT #1, A$
LINE INPUT #1, A$
CLOSE 1

PRINT A$

यह आश्चर्यजनक है कि आप 10 साल बाद भी ऐसा कर सकते हैं! अच्छा किया और आपके योगदान के लिए धन्यवाद।
ब्रॉक वुल्फ

मैं निश्चित रूप से इसे अपने सिर के ऊपर से नहीं करता था: कुछ सामान देखने के लिए कुछ मिनट लगते थे।
कैसाब्लांका

हाँ बिलकुल। फिर भी अच्छा किया।
ब्रुक वुल्फ

क्या आपको BASIC के सबसे क्लासिक संस्करण में लाइन नंबर की आवश्यकता नहीं है ???
युजी

@ यूजी: "सबसे क्लासिक संस्करण" में, हां, लेकिन मुझे नहीं लगता कि 90 के दशक की शुरुआत से किसी भी संस्करण की आवश्यकता है।
कैसाब्लांका

16

उद्देश्य सी

NSFileHandle *fh = [NSFileHandle fileHandleForUpdatingAtPath:@"fileio.txt"];

[[NSFileManager defaultManager] createFileAtPath:@"fileio.txt" contents:nil attributes:nil];

[fh writeData:[@"hello" dataUsingEncoding:NSUTF8StringEncoding]];
[fh writeData:[@"\nworld" dataUsingEncoding:NSUTF8StringEncoding]];

NSArray *linesInFile = [[[NSString stringWithContentsOfFile:@"fileio.txt" 
                                             encoding:NSUTF8StringEncoding 
                                                error:nil] stringByStandardizingPath] 
                          componentsSeparatedByString:@"\n"];

NSLog(@"%@", [linesInFile objectAtIndex:1]);

17
मुझे ऑब्जेक्टिव-सी कभी पसंद नहीं आया। जावा जैसी भाषा से आने पर सिंटैक्स बस इतना विदेशी लगता है।
फैसल आबिद

5
Objective-C का रहस्य यह है कि Xcode आपके लिए सभी कोड को पूरा करता है। आपको लंबी विधि के नाम याद रखने की आवश्यकता नहीं है। वे निश्चित रूप से आपके कोड को अधिक पठनीय बनाते हैं
ब्रॉक वुल्फ

7
और मुझे लगा कि c ++ सिंटैक्स पहले से ही सबसे खराब लग रहा था।
टॉड

6
ऑब्जेक्टिव-सी केवल खराब दिखता है क्योंकि स्टैकओवरफ्लो सिंटैक्स हाइलाइटर सही ढंग से रंगीन नहीं होता है।
ब्रॉक वुल्फ

4
मुझे विश्वास नहीं हो रहा है कि यह सूची से बहुत नीचे है! इसके अलावा जावा लोग टिप्पणी करते हैं कि ऑब्जेक्टिव-सी बदसूरत है, क्या आपने देखा कि एक ही फाइल को लिखने में कितनी लाइनें लगीं? मैं एक जावा उत्साही हुआ करता था, लेकिन मुझे लगता है कि ऑब्जेक्टिव-सी ने मेरे दिल में रास्ता बना दिया है।
काइल

16

पर्ल

#!/usr/bin/env perl

use 5.10.0;
use utf8;
use strict;
use autodie;
use warnings qw<  FATAL all     >;
use open     qw< :std  :utf8    >;

use English  qw< -no_match_vars >;

# and the last shall be first
END { close(STDOUT) }

my $filename = "fileio.txt";
my($handle, @lines);

$INPUT_RECORD_SEPARATOR = $OUTPUT_RECORD_SEPARATOR = "\n";

open($handle, ">",  $filename);
print $handle "hello";
close($handle);

open($handle, ">>", $filename);
print $handle "world";
close($handle);

open($handle, "<",  $filename);
chomp(@lines = <$handle>);
close($handle);

print STDOUT $lines[1];

15
लेक्सिकल फाइलहैंडल के बारे में क्या, 3 तर्क खुले?
एमकेवी

6
स्टैक ओवरफ्लो पर गैर-शाब्दिक फाइलहैंडल्स का उपयोग कभी नहीं किया जाना चाहिए। व्यवहार में उनके लिए शायद ही कभी आवश्यकता होती है, और शुरुआती लोगों को कभी भी यह नहीं दिखाया जाना चाहिए कि वे भी मौजूद हैं।
ईथर

4
समान दो तर्क के लिए खुला है: आपको इसे स्टैक ओवरफ्लो पर कभी भी उपयोग नहीं करना चाहिए, और शायद अभ्यास में नहीं।
rpkelly

2
मैं 3-आर्ग ओपन और लेक्सिकल फाइलहैंडल्स का उपयोग करता हूं, जब मैं इसे देखता हूं तो मैं व्यावहारिक रूप से इसे सिंटैक्स त्रुटि मानता हूं। और ऐसा ही होना चाहिए। / me इसे बनाने के लिए एक मॉड्यूल लिख रहा है।
केंट फ्रेड्रिक

2
"यहां तक ​​कि एकरारी ओपन के भी अपने उपयोग हैं", इसके उपयोग हैं, हां, लेकिन मुझे लगा कि जिस दिन मैंने काम किया था, उस दिन मुझे गाली दी थी और "निश्चित रूप से एक और तरीका है" जाएगा, हर बार जब मैं किसी ऐसे व्यक्ति को देखता हूं, जो सोचते हैं कि उन्हें इसकी आवश्यकता है। perl -we 'for (q{ps aux |}){ open _; print <_>; }'
केंट फ्रेड्रिक

15

आर:

बिल्ली ("हैलो \ n", फ़ाइल = "fileio.txt")
बिल्ली ("world \ n", फ़ाइल = "fileio.txt", append = TRUE)
line2 = readLines ("fileio.txt", n = 2) [2]
बिल्ली (पंक्ति 2)

15

पीएचपी

<?php

$filePath = "fileio.txt";

file_put_contents($filePath, "hello");
file_put_contents($filePath, "\nworld", FILE_APPEND);

$lines = file($filePath);

echo $lines[1];

// closing PHP tags are bad practice in PHP-only files, don't use them

एक दम बढ़िया। योगदान के लिए धन्यवाद।
ब्रुक वुल्फ

20
वैकल्पिक रूप से, आप सी कार्यान्वयन ले सकते हैं और डॉलर के संकेत जोड़ सकते हैं।
केंडल हॉपकिंस

@strager मुझे कोई पता नहीं है। ऐसे लोग हैं जो नहीं जानते कि यह वैकल्पिक है और यह वास्तव में इसके बिना बेहतर है।
इओनु

6
बस किसी के उत्सुक होने के कारण, उसने बंद टैग को छोड़ दिया, क्योंकि यदि आप इसे शामिल करते हैं, और किसी भी जगह को पीछे छोड़ते हैं, तो आप 'हेडर पहले से भेजे गए' त्रुटि प्राप्त करने का जोखिम उठाते हैं।
बिल H

संदर्भ के लिए संदर्भ ?>: चौखटे
.zend.com

15

जावा

import java.io.*;
import java.util.*;

class Test {
  public static void  main(String[] args) throws IOException {
    String path = "fileio.txt";
    File file = new File(path);

    //Creates New File...
    try (FileOutputStream fout = new FileOutputStream(file)) {
      fout.write("hello\n".getBytes());
    }

    //Appends To New File...
    try (FileOutputStream fout2 = new FileOutputStream(file,true)) {
      fout2.write("world\n".getBytes());
    }

    //Reading the File...
    try (BufferedReader fin = new BufferedReader(new FileReader(file))) {
      fin.readLine();
      System.out.println(fin.readLine());
    }       
  }
}

36
@Brock: इन दिनों जावा धीमा नहीं है। सिर्फ क्रिया, लेकिन धीमी नहीं। कृपया ऐसी टिप्पणी न करें; हमें जेवीएम के लोग आहत करते हैं। : '|
अनुपलब्ध

9
जिस किसी ने कहा कि जावा धीमा है या तो एक अंधे जावा से नफरत करता है या एक चट्टान के नीचे रहता है। जावा उतनी ही तेजी से हो सकता है, अगर सी से तेज नहीं है, बूट करने के लिए प्लेटफॉर्म की स्वतंत्रता के साथ।
NullUserException

4
@ मिक्सिंग फकीर: और ऐसा?
जेरी कॉफिन

19
निष्पादन की गति pissing प्रतियोगिता प्रोग्रामर के सबसे मंद रूप है। यह हमेशा नौकरी के लिए सही उपकरण चुनने के बारे में होता है, निष्पादन की गति जैसी यादृच्छिक मीट्रिक का चयन करना और इसके लिए महत्व का ढेर लगाना सिर्फ मूर्खतापूर्ण है, खासकर जब से निष्पादन की गति विशाल बहुमत के कार्यों के लिए बहुत महत्वपूर्ण नहीं है, जब तक कि यह काफी तेज है (जो जावा लगभग हर चीज के लिए है)
मैट ब्रिग्स

11
"हार्डवेरिंग मशीन कोड की तुलना में तेज़ है", "मशीन कोड एएसएम से तेज़ है", "एएसएम सी की तुलना में तेज़ है", "सी जावा की तुलना में तेज़ है", "ब्ला ब्ला ब्ला" ... क्या आपके पास भी एक सुराग है कि कितना है मशीन कोड और CPU के बीच अप्रत्यक्षता पहले से है? माइक्रोकोड, प्रेडिक्टिव ऑप्टिमाइज़र, इंस्ट्रक्शन / डेटा कैश, डिकोडर, इत्यादि, सी / एएसएम में डायनेमिक एलोकेशन के कारण होने वाले नोंदेर्मिनिज़म का उल्लेख नहीं करना। जावा और अन्य सुरक्षित भाषाएं अप्रत्यक्ष रूप से सिर्फ एक छोटा कदम है, यह कोई बड़ी बात नहीं है। आप या तो अपने आदिम रूप में हमेशा के लिए रह सकते हैं या हमारे साथ विकसित हो सकते हैं।
L̲̳̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e

14

सी ++

#include <limits>
#include <string>
#include <fstream>
#include <iostream>

int main() {
    std::fstream file( "fileio.txt",
        std::ios::in | std::ios::out | std::ios::trunc  );
    file.exceptions( std::ios::failbit );   

    file << "hello\n" // << std::endl, not \n, if writing includes flushing
         << "world\n";

    file.seekg( 0 )
        .ignore( std::numeric_limits< std::streamsize >::max(), '\n' );
    std::string input_string;
    std::getline( file, input_string );

    std::cout << input_string << '\n';
}

या कुछ हद तक कम,

#include <string>
#include <fstream>
#include <iostream>
using namespace std;

int main() {
    fstream file( "fileio.txt", ios::in | ios::out | ios::trunc  );
    file.exceptions( ios::failbit );   

    file << "hello" << endl
         << "world" << endl;

    file.seekg( 0 ).ignore( 10000, '\n' );
    string input_string;
    getline( file, input_string );

    cout << input_string << endl;
}


14
मैं भूल गया कि कैसे बदसूरत c ++ का सिंटैक्स हो सकता है।
ताड

यह सी + + कोड की तरह दिखता है की तुलना में अत्याचारी है। मुख्य समस्या मानक पुस्तकालय में परिभाषित उपयुक्त स्थिरांक की कमी है, हालांकि, वाक्यविन्यास नहीं। यह मुझे दूर चल रही है कि मैं शामिल करने की जरूरत <limits>सिर्फ यह बताने के लिए ignoreवहाँ नहीं है लाइन आकार की एक सीमा होती।
पोटाटोस्वाटर

8
@ हंस: क्या आप इसे स्पष्ट करना चाहेंगे? व्यक्तिगत रूप से, मैं मैं / हे लगता अंतर्गत आता है एक पुस्तकालय में के बजाय भाषा में, और सभी भाषाओं मैं में कार्यक्रम इसे उस तरह से (सी, सी ++, जावा, अजगर, आदि) करना
चिन्मय कांची

2
अब मुझे पता है कि लिनस क्यों कहता है कि C ++ बदसूरत है। (कोई अपराध नहीं)
kizzx2

13

जाओ

package main

import (
  "os"
  "bufio"
  "log"
)

func main() {
  file, err := os.Open("fileio.txt", os.O_RDWR | os.O_CREATE, 0666)
  if err != nil {
    log.Exit(err)
  }
  defer file.Close()

  _, err = file.Write([]byte("hello\n"))
  if err != nil {
    log.Exit(err)
  }

  _, err = file.Write([]byte("world\n"))
  if err != nil {
    log.Exit(err)
  }

  // seek to the beginning 
  _, err = file.Seek(0,0)
  if err != nil {
    log.Exit(err)
  }

  bfile := bufio.NewReader(file)
  _, err = bfile.ReadBytes('\n')
  if err != nil {
    log.Exit(err)
  }

  line, err := bfile.ReadBytes('\n')
  if err != nil {
    log.Exit(err)
  }

  os.Stdout.Write(line)
}

23
इस भाषा का नाम "प्रकार" रखा जाना चाहिए
Aiden Bell

क्या os.O_RDWR | os.O_CREATE, 0666गो में बुनियादी फ़ाइल I / O के लिए भी कबाड़ आवश्यक है?
जोए एडम्स

1
या हो सकता है कि इसका नाम "स्टॉप" रखा जाए
xagyg

16
यह बल्कि आश्चर्यजनक है कि 30 साल के विकास और भाषा के डिजाइन को देखते हुए, वे अभी भी एक नई भाषा का आविष्कार करने में कामयाब रहे हैं जो सी-जावा की कम क्रिया के रूप में त्रुटि-जाँच कोड लिखना मुश्किल है!
डी.के.

5
वाह ... गो इस उदाहरण के साथ बहुत असफल लगता है
एलेसेंड्रो स्टैमैटो

12

Erlang

संभवतः सबसे मुहावरेदार एरलांग नहीं, लेकिन:

#!/usr/bin/env escript

main(_Args) ->
  Filename = "fileio.txt",
  ok = file:write_file(Filename, "hello\n", [write]),
  ok = file:write_file(Filename, "world\n", [append]),
  {ok, File} = file:open(Filename, [read]),
  {ok, _FirstLine} = file:read_line(File),
  {ok, SecondLine} = file:read_line(File),
  ok = file:close(File),
  io:format(SecondLine).

12

Emacs लिस्प

Emacs मुख्य रूप से एक पाठ संपादक [1] कुछ लोगों को क्या कहते हैं के बावजूद। इसलिए जबकि Emacs Lisp का उपयोग सभी प्रकार की समस्याओं को हल करने के लिए किया जा सकता है, यह एक पाठ संपादक की जरूरतों के लिए अनुकूलित है। चूंकि पाठ संपादकों (स्पष्ट रूप से) की विशिष्ट आवश्यकताएं होती हैं, जब यह आता है कि कैसे फाइलों को संभाला जाता है यह प्रभावित करता है कि फाइल संबंधी कार्यक्षमता Emacs Lisp प्रदान करती है।

मूल रूप से इसका मतलब यह है कि Emacs Lisp एक फाइल को स्ट्रीम के रूप में खोलने के लिए फ़ंक्शन प्रदान नहीं करता है, और इसे भाग द्वारा पढ़ा जाता है। इसी तरह आप पहले पूरी फ़ाइल को लोड किए बिना किसी फ़ाइल में नहीं जा सकते। इसके बजाय फ़ाइल पूरी तरह से [2] एक बफर [3] में पढ़ी जाती है, संपादित की जाती है और फिर एक फ़ाइल में सहेजी जाती है।

उन कार्यों के लिए जिन्हें आप Emacs Lisp का उपयोग करेंगे, यह उपयुक्त है और यदि आप कुछ ऐसा करना चाहते हैं जिसमें उन्हीं कार्यों को संपादित करना शामिल नहीं है जिनका उपयोग किया जा सकता है।

यदि आप किसी फाइल को बार-बार अपीयर करना चाहते हैं तो यह एक बहुत बड़ा ओवरहेड है, लेकिन यह यहां प्रदर्शित के रूप में संभव है। व्यवहार में आप सामान्य रूप से एक बफर में परिवर्तन करना समाप्त करते हैं चाहे वह मैन्युअल रूप से या प्रोग्रामेटिक रूप से फ़ाइल में लिखने से पहले (बस नीचे के उदाहरण में पहले दो एस-एक्सप्रेशंस को मिलाएं)।

(with-temp-file "file"
  (insert "hello\n"))

(with-temp-file "file"
  (insert-file-contents "file")
  (goto-char (point-max))
  (insert "world\n"))

(with-temp-buffer
  (insert-file-contents "file")
  (next-line)
  (message "%s" (buffer-substring (point) (line-end-position))))

[१] कम से कम मैं इसे ओएस कहकर नहीं जाता; एक वैकल्पिक यूआई हाँ, एक ओएस नं।

[२] आप किसी फ़ाइल के केवल हिस्सों को लोड कर सकते हैं, लेकिन यह केवल बाइट-वार निर्दिष्ट किया जा सकता है।

[३] एक बफर स्ट्रिंग के समान और साथ ही "फ़ाइल को संपादित करते समय आपके द्वारा देखी जाने वाली चीज़" के समान है। बफ़र संपादित करते समय एक विंडो में प्रदर्शित किया जाता है, लेकिन बफ़र्स को उपयोगकर्ता को दिखाई देने की आवश्यकता नहीं है।

संपादित करें: यदि आप बफर में डाले जा रहे पाठ को देखना चाहते हैं, तो आपको स्पष्ट रूप से इसे देखना होगा, और क्रियाओं के बीच सोना होगा। क्योंकि Emacs आम तौर पर केवल स्क्रीन को फिर से खोलता है जब उपयोगकर्ता इनपुट के लिए इंतजार कर रहा होता है (और इनपुट के इंतजार के समान नहीं होता है) तो आपको फिर से लोड करने के लिए मजबूर करना होगा। इस उदाहरण में यह आवश्यक है (दूसरे सेक्सप के स्थान पर इसका उपयोग करें); व्यवहार में मुझे कभी भी एक बार भी is रेडिसप्ले ’का उपयोग नहीं करना पड़ा - तो हाँ, यह बदसूरत है लेकिन ...

(with-current-buffer (generate-new-buffer "*demo*")
  (pop-to-buffer (current-buffer))
  (redisplay)
  (sleep-for 1)
  (insert-file-contents "file")
  (redisplay)
  (sleep-for 1)
  (goto-char (point-max))
  (redisplay)
  (sleep-for 1)
  (insert "world\n")
  (redisplay)
  (sleep-for 1)
  (write-file "file"))

1
अच्छा धन्यवाद। क्या इसे बढ़ाना संभव है, इसलिए मैं वास्तव में एक 'भूत' को फ़ाइल को खोलने और इसे टाइप करने के लिए देखता हूं, जैसे किसी प्रकार का मैक्रो?
जेडू

11

विंडोज बैच फ़ाइलें - संस्करण # 2

@echo off
echo hello > fileio.txt
echo world  >> fileio.txt
set /P answer=Insert: 
echo %answer%  >> fileio.txt
for /f "skip=1 tokens=*" %%A in (fileio.txt) do echo %%A

यह समझने के लिए कि अंतिम भयानक लूप की तलाश है, यह मानता है कि फ़ाइल में केवल हैलो (न्यूलाइन) दुनिया है। तो यह सिर्फ पहली पंक्ति को छोड़ता है और केवल दूसरी को ईकोस करता है।

बदलाव का

  • 2 - विरोध, आवश्यकताओं को गलत ठहराना चाहिए या वे मुझ पर बदल गए। अब फाइल से लास्ट लाइन पढ़ता है


साफ। आपके योगदान के लिए धन्यवाद।
ब्रॉक वुल्फ

मैं बनाई गई फ़ाइल से पढ़ने के रूप में चरण 4) को समझता हूं ।
devio

@ देवियो - आवश्यकताएं बदल गई होंगी या मैंने उन्हें गलत समझा होगा ... वैसे भी मैं देखूंगा कि क्या ऐसा कोई समाधान मौजूद है
TheLQ

11

स्काला:

मानक पुस्तकालय का उपयोग करना:

val path = "fileio.txt"
val fout = new FileWriter(path)
fout write "hello\n"
fout.close()
val fout0 = new FileWriter(path, true)
fout0 write "world\n"
fout0.close() 
val str = Source.fromFile(path).getLines.toSeq(1)
println(str)

जोश सुरेथ की स्काला-एआरएम लाइब्रेरी का उपयोग करना :

val path = "fileio.txt"
for(fout <- managed(new FileWriter(path))) 
  fout write "hello\n"
for(fout <- managed(new FileWriter(path, true))) 
  fout write "world\n"
val str = Source.fromFile(path).getLines.toSeq(1)
println(str)      


चूंकि कई लोगों ने दो तार लिखने के लिए एक ही फाइल डिस्क्रिप्टर का उपयोग किया है, इसलिए मैं अपने उत्तर में इस तरह से शामिल हूं।

मानक पुस्तकालय का उपयोग करना:

val path = "fileio.txt"
val fout = new FileWriter(path)
fout write "hello\n"
fout write "world\n"
fout.close()
val str = Source.fromFile(path).getLines.toSeq(1)
println(str)

जोश सुरेथ की स्काला-एआरएम लाइब्रेरी का उपयोग करना :

val path = "fileio.txt"
for(fout <- managed(new FileWriter(path))){
  fout write "hello\n"
  fout write "world\n"
}
val str = Source.fromFile(path).getLines.toSeq(1)
println(str)

मुझे लगता है कि यह नज़दीकी () के बजाय फ्लश () के साथ अच्छा लगेगा ... FileWriter का पुन: त्वरितकरण नहीं।
रेड्टू

2
@Radtoo: एपेंड ऑपरेशन दिखाना था। इसलिए मैंने इसे इस तरह से किया।
गुमशुदा

@Radtoo: इस सूत्र में अन्य उत्तरों को देखने के बाद, मैंने आखिरकार उस तरीके को अपने उत्तर में शामिल करने का फैसला किया। इसे जाँचे। (हालांकि मैंने मूल कोड को नहीं हटाया है।)
लापता

@ मिस्सिंग फ़कॉर, जो आलसी getLines().toList()होना चाहिए getLines().toSeq?
एलजार लीबॉविच

@ इज़ार: अच्छा सुझाव। धन्यवाद। :)
गुमशुदा

11

ग्रूवी

new File("fileio.txt").with { 
    write  "hello\n"
    append "world\n"   
    println secondLine = readLines()[1]
}

योगदान के लिए धन्यवाद।
ब्रुक वुल्फ

3
आप "दुनिया \ n" भाग को धोखा दे रहे हैं। यह संलग्न नहीं है, यह केवल एक ही फाइल डिस्क्रिप्टर को लिख रहा है।
OTZ

मूल पोस्ट में तीसरा स्पष्टीकरण "आपको पहली पंक्ति लिखने के बाद पाठ फ़ाइल को फिर से खोलने की आवश्यकता नहीं है"
वेन कीन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.