জাভাতে স্ট্রিং থেকে মেমরিতে একটি ফাইল অবজেক্ট তৈরি করুন Create


113

আমার একটি ফাংশন রয়েছে যা ফাইলটিকে একটি আর্গুমেন্ট হিসাবে গ্রহণ করে। আমার স্ট্রিং ডেটাটি ফাংশনে পাস করার জন্য আমি কোনও নতুন ফাইল তৈরি করতে / লিখতে চাই না (ফাইল সিস্টেমে আমার লেখার অ্যাক্সেস নেই)। আমার যুক্ত করা উচিত যে স্ট্রিং ডেটা কোনও ফাইলে বিদ্যমান না (তাই আমি কোনও ফাইল থেকে আমার ডেটা পড়তে পারি না)।

আমি কী স্ট্রিম ব্যবহার করতে এবং সেগুলিকে ফাইল অবজেক্টে "কাস্ট" করতে পারি?


2
আপনি কি কোডটি লিংক / পোস্ট করতে পারেন যা কোনও Fileঅবজেক্ট নেয় ? উত্তরগুলি যেমন বলেছে, কোনও Fileবস্তু ফাইল সিস্টেমের কোনও অবস্থানের রেফারেন্সের মতো এবং তাই প্রকৃত ফাইল ব্যতীত অনুকরণ করা শক্ত। তবে, যদি আপনার ফাংশনটি এক FileReaderবা একটি গ্রহণ করে FileInputStream, আপনি সহজেই ফাইল নন-ইনপুট গ্রহণ করতে কোডটি সংশোধন করতে পারেন।
101100

মেমরি ম্যাপযুক্ত ফাইলগুলি আপনার পছন্দ হতে পারে। এটি জাভাতে থাকা বিশেষ ফাইল যা জাভা প্রোগ্রামটিকে সরাসরি মেমরি থেকে সামগ্রীগুলি অ্যাক্সেস করতে দেয়। বিশদর
ব্যাকটিরিয়া

উত্তর:


48

না; শ্রেণীর উদাহরণগুলি Fileফাইল সিস্টেমে একটি পথকে উপস্থাপন করে। অতএব, আপনি কেবল একটি ফাইল দিয়ে সেই ফাংশনটি ব্যবহার করতে পারেন। তবে সম্ভবত একটি ওভারলোড আছে যা তার InputStreamপরিবর্তে লাগে ?


76

সাধারণত যখন কোনও পদ্ধতি কোনও ফাইল গ্রহণ করে, তখন কাছাকাছি আরেকটি পদ্ধতি রয়েছে যা একটি স্ট্রিম গ্রহণ করে। যদি এটি না হয় তবে এপিআই খারাপভাবে কোডেড। অন্যথায়, আপনি অস্থায়ী ফাইলগুলি ব্যবহার করতে পারেন, যেখানে বেশিরভাগ ক্ষেত্রে সাধারণত অনুমতি দেওয়া হয়। যদি এটি অ্যাপলেট হয় তবে আপনি লেখার অনুমতি চেয়ে আবেদন করতে পারেন ।

একটি উদাহরণ:

try {
    // Create temp file.
    File temp = File.createTempFile("pattern", ".suffix");

    // Delete temp file when program exits.
    temp.deleteOnExit();

    // Write to temp file
    BufferedWriter out = new BufferedWriter(new FileWriter(temp));
    out.write("aString");
    out.close();
} catch (IOException e) {
}

1
লেখার অনুমতি (এটি গুগল অ্যাপজাইন) এর জন্য অনুরোধ করতে পারবেন না
জন রোমেরো

12

জাভাতে একটি ফাইল অবজেক্ট হ'ল ডিরেক্টরি বা ফাইলের পাথের প্রতিনিধিত্ব, ফাইলটি নিজেই নয়। কোনও Fileঅবজেক্ট তৈরি করার জন্য আপনার কাছে ফাইল সিস্টেমে লেখার অ্যাক্সেসের দরকার নেই, আপনি কেবল তখনই এটির প্রয়োজন যখন আপনি ফাইলটিতে প্রকৃতপক্ষে লিখতে চান ( উদাহরণস্বরূপ ফাইলআউটপুট স্ট্রিম ব্যবহার করে )


1
যদি আপনাকে কোনও বাহ্যিক এপিআই-তে কোনও ফাইল পাস করার দরকার হয় তবে আপনার একটি আসল ফাইল দরকার - একটি "খালি" ফাইল অজেক্টে কাজ করা চলবে না।
আন্দ্রে ভলগিন

8

Fileবর্গ, I / O জন্য একটি ফাইল, না ব্যবহার করার জন্য একটি প্রকৃত হাতল এর "ধারণা" প্রতিনিধিত্ব করে। এই কারণেই Fileক্লাসটির একটি .exists()পদ্ধতি রয়েছে, আপনাকে ফাইলটি উপস্থিত আছে কি নেই তা বলার জন্য। (আপনি কীভাবে Fileএমন কোনও জিনিস রাখতে পারেন যা বিদ্যমান নেই?)

বিপরীতে, একটি নির্মাণ new FileInputStream(new File("/my/file"))আপনাকে বাইটগুলি পড়ার জন্য একটি আসল স্ট্রিম দেয়।


-1
FileReader r = new FileReader(file);

ফাইল রিডার ব্যবহার করে ফাইলটি লোড করুন এবং তার স্ট্রিং বাফারে এর বিষয়বস্তু লিখুন।

উদাহরণ

উপরের লিঙ্কটি কীভাবে এটি সম্পাদন করতে পারে তার একটি উদাহরণ দেখায়। এই উত্তরের অন্যান্য পোস্টে যেমন কোনও ফাইল মেমোরিতে লোড করতে বলা হয় ততক্ষণ আপনার লেখার অ্যাক্সেসের প্রয়োজন হবে না যতক্ষণ না আপনি আসল ফাইলটিতে পরিবর্তন করার পরিকল্পনা করেন না।

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