मैं स्प्रिंग बूट का उपयोग करके अपने सर्वर में एक साधारण मैनुअल कैशिंग सिस्टम बनाने की कोशिश कर रहा हूं। इसे सफल करने के लिए, मैंने दो अलग-अलग फाइलें लिखीं, जिनमें से एक कैशिंग टाइम के लिए और दूसरी डेटा है। मैंने पहले अनुरोध पर लिखने की योजना बनाई और 5 मिनट में अन्य अनुरोध फ़ाइल से कॉल करेंगे।

समस्या यह है कि प्रवाह मेरे स्थानीयहोस्ट में सही ढंग से काम कर रहा है, लेकिन जब मैं अपना कोड तैनात करता हूं, तो स्प्रिंग बूट एक नई फाइल नहीं बना सकता है और इसे निश्चित रूप से पढ़ सकता है।

कोड नीचे की तरह मेरे लेखन और पठन हैं।

 @Override
public void writeFile( String folder, String path, String data ) throws IOException {
    File file = new File( folder );
    if ( !file.exists() ) {
        if ( file.mkdir() ) {
            System.out.println( "Directory is created!" );
        } else {
            System.out.println( "Failed to create directory!" );
        }
    }

    BufferedWriter writer = new BufferedWriter( new FileWriter( path ) );
    writer.write( data );

    writer.flush();
    writer.close();
}

@Override
public String readFile( File file ) {
    BufferedReader reader = null;
    StringBuilder buffer = new StringBuilder();

    try {
        reader = new BufferedReader( new FileReader( file ) );
        String text;

        while ( ( text = reader.readLine() ) != null ) {
            buffer.append( text );
        }
    } catch ( IOException e ) {
        e.printStackTrace();
    } finally {
        try {
            if ( reader != null ) {
                reader.close();
            }
        } catch ( IOException e ) {
            e.printStackTrace();
        }
    }

    return buffer.toString();
}

जब मैं लोकलहोस्ट में राइट फाइल मेथड को कॉल करता हूं, तो यह जरूरी फाइल्स और फोल्डर बना रहा होता है। नीचे दी गई तस्वीर में, यह lastsavedtime.txt और Readerlist.json बना रहा है।

the files created by method

और readFile विधि फ़ाइलों को सफलतापूर्वक पढ़ती है। वही प्रक्रिया सर्वर पर काम नहीं कर रही है।

स्प्रिंग बूट संस्करण: 2.0.5। Azure वेब ऐप को सर्वर के रूप में रिलीज़ करें।

मदद के लिए शुक्रिया।

0
Olkunmustafa 16 फरवरी 2021, 12:22
1
क्या कोई त्रुटि/अपवाद संदेश है?
 – 
tiny-wa
16 फरवरी 2021, 16:44
1
आप जिस फ़ाइल पथ पर लिख रहे हैं वह क्या है? किसी फ़ाइल में IMHO कैशिंग नहीं होनी चाहिए। मेमोरी में कैशिंग होनी चाहिए। और अगर आप वास्तव में किसी फाइल में डेटा लिखना चाहते हैं, तो फाइल रिसोर्स फोल्डर में होनी चाहिए।
 – 
Shyam Baitmangalkar
16 फरवरी 2021, 16:45
1
मैंने अपनी तरफ से कोशिश की और मुझे लगता है कि यह फ़ाइल पथ से संबंधित हो सकता है, यदि ऐसा है, तो आप 'फ़ाइल फ़ाइल = नई फ़ाइल ("src/main/resource/templates/testfile")' और 'BufferedWriter लेखक' जैसे पूर्ण पथ का उपयोग करने का प्रयास कर सकते हैं। = नया BufferedWriter (नया FileWriter ("src/main/resource/templates/testfile/cout.txt"));'
 – 
tiny-wa
16 फरवरी 2021, 17:26
1
क्लाउड आप हमें 'राइटफाइल' के एंटर पैरामीटर का एक उदाहरण दिखाते हैं, फोल्डर क्या है, लोकलहोस्ट में पथ और सर्वर में?
 – 
tiny-wa
19 फरवरी 2021, 04:50
1
मैंने अपनी जगह पर कोशिश की है और "कोशिश पकड़ने" जोड़कर मैंने पाया कि अपवाद फ़ोल्डर से आता है, उदाहरण के लिए, मेरे स्थानीयहोस्ट में, मैं src/.../xx.txt का उपयोग कर सकता हूं, लेकिन तैनाती के बाद, मैंने कुडु का उपयोग किया और पाया कि '\home\site\wwwroot' में केवल एक 'app.jar' मौजूद है, इसलिए प्रोग्राम फोल्डर और फाइल नहीं बना सकता। फिर मैंने 'D:/home/site/wwwroot/testfile/cout.txt' जैसे फोल्डर को बदलने की कोशिश की, फिर यह काम कर गया। वैसे, फ़ोल्डर बनाने के लिए 'file.mkdirs ()' का उपयोग करना बेहतर है।
 – 
tiny-wa
19 फरवरी 2021, 13:00

1 उत्तर

सबसे बढ़िया उत्तर

टिप्पणी के बारे में अनुपूरक नोट्स।

@RequestMapping(value="/newFile", method=RequestMethod.GET)
    public String newFile(String folder, String path, String data){     
//      File file = new File("D:/home/site/wwwroot/testfile");      
        File file = new File( folder );
        file.mkdirs();
        try {
//          BufferedWriter writer = new BufferedWriter( new FileWriter("D:/home/site/wwwroot/testfile/cout.txt") );
            BufferedWriter writer = new BufferedWriter( new FileWriter( path ) );    
            writer.write( data );       
            writer.flush();
            writer.close();   
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return "hello world";
    }

enter image description here

1
tiny-wa 19 फरवरी 2021, 13:03
/home/site/wwwroot पथ काम कर गया! बहुत बहुत धन्यवाद :D
 – 
Olkunmustafa
19 फरवरी 2021, 22:43