প্রকল্পের রুট ডিরেক্টরিতে কোনও পাঠ্য ফাইল কীভাবে পড়বেন?


95

আমি আমার প্রকল্পের মূল ডিরেক্টরিতে যুক্ত একটি পাঠ্য ফাইলের প্রথম লাইনটি পড়তে চাই। অর্থ, আমার সমাধান এক্সপ্লোরার আমার প্রকল্পের আমার .cs ফাইলের পাশে .txt ফাইলটি দেখিয়ে দিচ্ছেন।

সুতরাং, আমি চেষ্টা করেছি:

TextReader tr = new StreamReader(@"myfile.txt");
string myText = tr.ReadLine();

তবে এটি কাজ করে না কারণ এটি বিন ফোল্ডারের সাথে উল্লেখ করা হচ্ছে এবং আমার ফাইল সেখানে নেই ... আমি কীভাবে এই কাজটি করতে পারি? : /

ধন্যবাদ


বিটিডব্লিউ, স্ট্রিমরিডারের নামটি কিছুটা বিভ্রান্তিকর, মাইক্রোসফ্টের উচিত ছিল আমার মতে সেই পাঠ্যপ্রবাহের নামটি রাখা উচিত
জর্জ বীরবিলিস

উত্তর:


142

সমাধান এক্সপ্লোরার থেকে, myfile.txt এ ডান ক্লিক করুন এবং "সম্পত্তি" নির্বাচন করুন

সেখান থেকে, সেট Build Actionকরতে content এবং Copy to Output Directoryউভয় Copy alwaysবাCopy if newer

এখানে চিত্র বর্ণনা লিখুন


4
আমি বরং এই ফাইলটি আমার ব্যবহারকারীদের কাছে উন্মুক্ত করতাম না ... এটি dll এ এম্বেড করার এবং সেখান থেকে পড়ার কোনও উপায় আছে কি?
শাই UI

4
@ ফরেয়েজ সম্ভবত কোনও ফাইল ব্যবহার না করে আপনার প্রকল্পটিতে স্ট্রিংটিকে একটি উত্স হিসাবে যুক্ত করুন। দ্রষ্টব্য তথ্য অযোগ্য হবে না - এই ফাইলটিতে থাকা ডেটাটি কত সংবেদনশীল?
ড্যান জে

4
Embedded Resourceএম্বেডেড রিসোর্স ব্লগস.এমএসএন
বি /

যদি আমি কোনও প্রকল্পের জন্য একটি সেটআপ তৈরি করি তবে আমি সম্পত্তি নিয়ে কাজ করতে পারছি না। এর জন্য আর কোন সমাধান আছে কি?
নীল ভাসিন

36

কোনও ওয়েবসাইট প্রকল্পের মূল ডিরেক্টরিটি পেতে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন:

String FilePath;
FilePath = Server.MapPath("/MyWebSite");

অথবা আপনি যেমন বেস ডিরেক্টরি পেতে পারেন:

AppDomain.CurrentDomain.BaseDirectory

32

আপনার প্রকল্পে একটি সংস্থান ফাইল যুক্ত করুন (ডান ক্লিক করুন প্রকল্প-> বৈশিষ্ট্য-> সংস্থানসমূহ)। যেখানে এটি "স্ট্রিংস" বলছে, আপনি "ফাইল" হিসাবে পরিবর্তন করতে পারেন। "সংস্থান যুক্ত করুন" চয়ন করুন এবং আপনার ফাইল নির্বাচন করুন।

আপনি এখন Properties.Resourcesসংগ্রহের মাধ্যমে আপনার ফাইলটি উল্লেখ করতে পারেন ।


16
private string _filePath = Path.GetDirectoryName(System.AppDomain.CurrentDomain.BaseDirectory);

উপরের পদ্ধতিটি আপনাকে এরকম কিছু এনে দেবে:

"C:\Users\myuser\Documents\Visual Studio 2015\Projects\myProjectNamespace\bin\Debug"

এখান থেকে আপনি System.IO.Directory.GetParent ব্যবহার করে পিছনে নেভিগেট করতে পারেন:

_filePath = Directory.GetParent(_filePath).FullName;

1 বার আপনাকে \ বিনে নিয়ে যাবে, 2 বার আপনাকে \ myProjectNamespace এ নিয়ে যাবে, তাই এটি এরকম হবে:

_filePath = Directory.GetParent(Directory.GetParent(_filePath).FullName).FullName;

ভাল, এখন আপনার কাছে "সি: \ ব্যবহারকারী \ মাইউজার \ ডকুমেন্টস \ ভিজ্যুয়াল স্টুডিও 2015 \ প্রকল্পসমূহ \ মাইপ্রজেক্ট নেমস্পেস" এর মতো কিছু রয়েছে, উদাহরণস্বরূপ, কেবলমাত্র আপনার ফাইলনামের সাথে চূড়ান্ত পথটি সংযুক্ত করুন:

_filePath += @"\myfile.txt";
TextReader tr = new StreamReader(_filePath);

আশা করি এটা সাহায্য করবে.


ধন্যবাদ, তবে _ফিলিপথ = পাথ.কোমাইন (_ফিলিপথ, "মাইফাইল.txt") করতে পারেন; // আড়ম্বরপূর্ণভাবে :)
ফ্রি ক্লিমব

14

আপনি এটি এম্বেড করতে পারেন (এতে অ্যাকশন সেট করতেও পারেন Resource), সেখান থেকে এটিকে পুনরুদ্ধার করার উপায় এটি:

private static UnmanagedMemoryStream GetResourceStream(string resName)
{
    var assembly = Assembly.GetExecutingAssembly();
    var strResources = assembly.GetName().Name + ".g.resources";
    var rStream = assembly.GetManifestResourceStream(strResources);
    var resourceReader = new ResourceReader(rStream);
    var items = resourceReader.OfType<DictionaryEntry>();
    var stream = items.First(x => (x.Key as string) == resName.ToLower()).Value;
    return (UnmanagedMemoryStream)stream;
}

private void Button1_Click(object sender, RoutedEventArgs e)
{
    string resName = "Test.txt";
    var file = GetResourceStream(resName);
    using (var reader = new StreamReader(file))
    {
        var line = reader.ReadLine();
        MessageBox.Show(line);
    }
}

(কিছু কোড থেকে নেওয়া এই উত্তরটি দ্বারা চার্লস )


3

এই ক্ষেত্রে আপনাকে নিখুঁত পথ ব্যবহার করতে হবে। আপনি যদি সেট করে থাকেন তবে CopyToOutputDirectory = CopyAlwaysএটি যেমন করছেন তেমন কাজ করবে।


1

এই কোডটিতে আপনি rootডিরেক্টরি প্রকল্পে অ্যাক্সেস করতে পারেন :

 string _filePath = Path.GetDirectoryName(System.AppDomain.CurrentDomain.BaseDirectory);

তারপরে:

StreamReader r = new StreamReader(_filePath + "/cities2.json"))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.