কীভাবে ফাইলআইপুট স্ট্রিমকে ইনপুট স্ট্রিমে রূপান্তর করবেন? [বন্ধ]


116

আমি শুধু একটি রূপান্তর করতে চান FileInputStreamএকটি থেকে InputStream, আমি কিভাবে করতে পারি?

যেমন

FileInputStream fis = new FileInputStream("c://filename");
InputStream is = ?; 
fis.close();

3
রঞ্জন। আপনি কি এই পোস্টের সঠিক উত্তর পরিবর্তন করতে পারেন? বর্তমান উত্তরটি সাবপার। আপনি যদি এটি নীচের একটিতে পরিবর্তন করেন তবে এটি সর্বোত্তম হবে।
হোয়াইট্যাট

এটি শুধু একটি নিরীহ প্রশ্ন .. আমি ধারাবাহিকতাতে সম্পর্কে সঠিক ধারণা না থাকার ছিল না ... কোনো এক @sudocode পাঠাতে পারেন
রঞ্জন

4
এটি সম্ভবত একটি নির্বোধ প্রশ্ন তবে অনেক লোক এখনও এই প্রশ্নটি উল্লেখ করেছেন কারণ এটি দরকারী।
হোয়াইট্যাট

1
@ উইলি মেন্টজেল আমি এখানে Fileক্লাস থেকে আসল রূপান্তর অনুসন্ধান করতে এসেছি InputStream। আপনার সম্পাদনাটি পরামর্শ দেয় যে লেখক যা চেয়েছিলেন (কমপক্ষে আংশিক), এবং এটি ঠিক নয়।
লাইন

@ লাইন আমি কেবল বিন্যাসটি পরিবর্তন করেছি বলে আমি মনে করি না যে আমি অর্থটি পরিবর্তন করেছি। আপনি যদি এখনও আপত্তি করেন তবে নির্দ্বিধায় আমার পরিবর্তনগুলি বোলব করুন। এটি তখন সম্প্রদায় দ্বারা পর্যালোচনা করা হবে। যাইহোক: প্রশ্নটি এখন যা ব্যতীত লেখক কী বোঝাতে চেয়েছিলেন তা আপনি কীভাবে জানবেন?
উইল মেন্টেল

উত্তর:


7

আপনি প্রথমে ইনপুট স্ট্রিম থেকে প্রথমে পড়তেন এবং তারপরে এটি বন্ধ করে দিতেন। আপনি অন্য ইনপুটস্ট্রিম (বা পাঠক) এ ফাইলআইপুট স্ট্রিম মোড়তে পারেন। আপনি মোড়ানো স্ট্রিম / রিডার বন্ধ করলে এটি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে।

যদি কলকারীকে ইনপুট স্ট্রিম ফিরিয়ে দেওয়া কোনও পদ্ধতি হয় তবে স্ট্রিমটি শেষ হয়ে গেলে এটি বন্ধ করার দায়িত্ব কলারের's আপনি যদি এটি আপনার পদ্ধতিতে বন্ধ করেন তবে কলার এটি ব্যবহার করতে সক্ষম হবেন না।

আপনার কিছু মন্তব্যের উত্তর দিতে ...

দূরবর্তী গ্রাহকের কাছে সামগ্রী ইনপুট স্ট্রিমটি প্রেরণ করতে আপনি ইনপুট স্ট্রিমের সামগ্রীটি একটি আউটপুট স্ট্রিমে লিখতেন এবং তারপরে উভয় স্ট্রিম বন্ধ করে দিতেন।

দূরবর্তী গ্রাহক আপনার তৈরি স্ট্রিম অবজেক্ট সম্পর্কে কিছুই জানেন না। তিনি কেবলমাত্র একটি ইনপুট স্ট্রিমের মধ্যে সামগ্রীটি পান যা সে তৈরি করবে, পাঠ করবে এবং বন্ধ করবে।


আমি যদি মেইলের মাধ্যমে একটি ইনপুটস্ট্রিম প্রেরণ করতে চাই তবে কী হবে। ..
ওপারে

2
স্ট্রিম অবজেক্ট নিজেই সিরিয়ালযোগ্য নয়। স্ট্রিমের সামগ্রীটি সিরিয়ালায়িত করা যায় - কোনও আউটপুট স্ট্রিমে লিখিত লিখিত করে
সুডোকোড

আসলে আমার উদ্দেশ্য একটি ফাইল প্রেরণ .. আমি একবার প্রেরণে কিছু চালাতে চাই না .. যেমন আমি স্ট্রিং প্রেরণ করছি .. যাতে অন্য পক্ষটি কোনও কিছু বন্ধ করার বিষয়ে চিন্তা না করে।
রঞ্জন

1
ফাইলও সিরিয়ালযোগ্য নয়। তবে একটি আউটপুট স্ট্রিম ব্যবহার করে কোনও ফাইলের বিষয়বস্তু সিরিয়ালীকৃত করা যায়।
সুডোকোড

এটা সম্ভব আমি কিছু সময় নির্দিষ্ট পরিমাণ ঘনিষ্ঠ inputstream, যেমন ফাইলের আকারের উপর নির্ভর করে অপেক্ষা করবে এবং তারপর
রঞ্জন



36

FileInputStream হয় একটি inputStream।

FileInputStream fis = new FileInputStream("c://filename");
InputStream is = fis;
fis.close();  
return is;

অবশ্যই, এটি আপনি যা করতে চান তা করবে না ; আপনার ফিরতি ধারাটি ইতিমধ্যে বন্ধ হয়ে গেছে। কেবল ফাইলআইপুট স্ট্রিমটি ফিরিয়ে দিন এবং এটি দিয়ে শেষ করুন। কলিং কোডটি এটি বন্ধ করা উচিত।


বা কেবল ফিরে fisআসি যদিও আমি বদ্ধ প্রবাহটি ফেরত দেওয়ার বিষয়ে নিশ্চিত নই।
বালা আর

6
এটি বোকা - আপনি যদি fisবন্ধ করেনis
আপনিও

1
যদি আমি ফাইলটি বন্ধ করি তবে ডেটা প্রেরণ করা হয় না
রঞ্জন

2
নিঃসন্দেহে রনক এজন্যই আমি এটি উল্লেখ করছি।
জোয়ারি হেন্ড্রিক্স

3
return FileInputStream("c://filename");যার রিটার্নের InputStream
ধরণটি

2

যদি আপনি একটি স্ট্রিমটিকে অন্যটিতে মুড়ে ফেলে থাকেন তবে আপনি মাঝারি স্ট্রিমগুলি বন্ধ করবেন না এবং খুব গুরুত্বপূর্ণ: আপনি বাইরের স্ট্রিমগুলি ব্যবহার করে শেষ করার আগে এগুলি বন্ধ করবেন না। কারণ আপনি বাইরের প্রবাহটিও বন্ধ করে দেবেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.