Is there any flaws in my code which let me to save settings to a file? This code allows me to save some settings from my small app to the text file which later I can retrieve by using substring and delimiter.

I wonder if there's any better way of doing this. If not, how could I make my code better or more efficient? 

This is my code:

using System;
using System.IO;

namespace NameSpace
{
    class LastUsed
    {
        private static string dir = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + @"\Folder\";
        private static string file = dir + @"\Settings.txt";
        private string text;

        public void CheckFileStatus()
        {
            if (!Directory.Exists(dir))
            {
                DirectoryInfo directory = Directory.CreateDirectory(dir);
            }
            if (!File.Exists(file))
            {
                using (FileStream fileStream = File.Create(file))
                {
                }
            }
        }

        public bool EmptyFile()
        {
            FileInfo fileInfo = new FileInfo(file);

            if (fileInfo.Length == 0) return true;
            else return false;
        }

        private void SetFileText(string writeText)
        {
            using (StreamWriter streamWriter = new StreamWriter(file))
            {
                streamWriter.Write(writeText);
            }
        }

        private string GetFileText()
        {
            using (StreamReader streamReader = File.OpenText(file))
            {
                return streamReader.ReadLine();
            }
        }

        public string Text
        {
            set 
            {
                text = value;
                SetFileText(text);
            }
            get 
            {
                return GetFileText(); 
            }
        }
    }
}
LastUsed is an awful name for a class.  The name of a class should always be a noun.  No exceptions.

Read-only fields should be marked as read-only using the readonly keyword.

CheckFileStatus is an awful name for a function. It does not give any hints as to what it means by 'File Status', nor any hints as to what it means by 'Checking' it.  Looking inside, I see that it performs operations that change the state of the system, so 'Check' is an awful choice of a name for what it does.  When a function begins with 'Check' it is supposed to return bool and to perform absolutely nothing that would change any state anywhere at all. No exceptions.

EmptyFile is not a good name for a function that checks whether a file is empty, because it may be confused with a function that actually empties the file.  Call it IsEmpty instead, and make it a property, not a function.

This is lame:

if (fileInfo.Length == 0) return true;
else return false;


Replace it with this:

return fileInfo.Length == 0;


In the SetFileText/GetFileText functions, streamWriter.Write() is not symmetrical to streamReader.ReadLine(). Consider either using streamReader.ReadToEnd(), (the preferred solution,) or using streamWriter.WriteLine() and also asserting that the text to be written does not already contain any Eolns, because if it does, then GetFileText() will not return the same string that was given on SetFileText().

The functions CheckFileStatus() and EmptyFile() expose implementation details of the class. These implementation details should not have to be exposed for a class which simply acts as a repository for a single string. It should be possible to rewrite the class to read/write the string from the Windows Registry, or from application.config, without having to change the interface of the class. So, replace those methods with some method which abstracts their usage.

And, by the way, why are you doing all this instead of just using the Windows Registry or application.config ?