की भी खफा मैं इस छोटे से परीक्षण लिखा था मेरी रुचि:
public static void main(String[] args) throws IOException {
FileInputStream fileInputStream = new FileInputStream("/home/nick/foo");
FileOutputStream fileOutputStream = new FileOutputStream("/home/nick/bar");
fileOutputStream.write(fileInputStream.read());
fileOutputStream.flush();
fileOutputStream.close();
fileInputStream.close();
}
यह काम अपेक्षा के अनुरूप - /home/nick/foo
से एक एकल बाइट पढ़ सकते हैं और /home/nick/bar
करने के लिए इसे लिखा था
संपादित करें:
अपडेट किया गया कार्यक्रम:
public static void main(String[] args) throws IOException {
FileInputStream fileInputStream = new FileInputStream("/home/nick/foo");
FileOutputStream fileOutputStream = new FileOutputStream("/home/nick/bar");
while (fileInputStream.available()>0) {
fileOutputStream.write(fileInputStream.read());
}
fileOutputStream.flush();
fileOutputStream.close();
fileInputStream.close();
}
कॉपी किया गया पूरी फाइल (ध्यान दें - मैं एक समय में एक फ़ाइल को बाइट कॉपी करने की अनुशंसा नहीं करता, पूरे भाग की प्रतिलिपि बनाने के लिए बुफर्ड I/O कक्षाओं का उपयोग करें)
क्या आप flush()
और close()
को आउटपुटस्ट्रीम में भूल गए थे?
क्या कोई लूप है जो आप हमें नहीं दिखा रहे हैं? क्योंकि पढ़ना() केवल डेटा का एक खंड पढ़ता है। आम तौर पर यह खंड एक कंटेनर द्वारा निर्धारित किया जाता है, एक इंट 32 बिट्स है जहां फ़ाइलआउटपुटस्ट्रीम बाइट्स –
की विभिन्न मात्रा लेता है, वे वही हैं। ध्यान दें कि यह ** नहीं ** इनपुट स्ट्रीम की संपूर्ण सामग्री को आउटपुट स्ट्रीम में कॉपी करता है। यह सिर्फ एक बाइट पढ़ और लिख देगा। – Jesper
यदि आप इसे काम करना चाहते हैं तो आपको एक बाइट बफर इनपुट करना चाहिए http://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html#read (बाइट []) –