0

ファイルを開き、行番号を追加してコンソールに出力する小さなプログラムがあります。問題は、プログラムがコマンド コンソールから実行されているか、IDE から実行されているかに関係なく、ファイルのアクセス許可に関する例外がスローされることです。

実行可能ファイルと読み取るファイル (単純な TXT ファイル) の両方を複数のディレクトリ (ドキュメント、一時ファイルなど) に移動しました。コンソールを管理者として実行し、Visual Studio を管理者として実行し、両方のファイルにすべてのアクセス許可を与えましたが、常に例外をスローします。最も奇妙なことは、1、2 週間前に試行錯誤して解決策に資金を提供したが、それを覚えていないことです。

例外は次のとおりです。

    Exception: System.UnauthorizedAccessException: Access to the path 'C:\Users\Nena
d\documents\visual studio 2010\Projects\Listing 10.6\Listing 10.6\bin\Debug\prog
ram.cs' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, I
nt32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions o
ptions, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolea
n useLongPath)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access,
FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean
bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode)
   at ListFile.Main(String[] args) in C:\Users\Nenad\documents\visual studio 201
0\Projects\Listing 10.6\Listing 10.6\Program.cs:line 22


Press any key to continue . . .

コードは次のとおりです。

// ListFile.cs - program to print a listing to the console
//-----------------------------------------------------------

using System;
using System.IO;

class ListFile
{
    public static void Main(string[] args)
    {
        try
        {

            int ctr = 0;
            if (args.Length <= 0)
            {
                Console.WriteLine("Format: ListFile filename");
                return;
            }
            else
            {
                FileStream fstr = new FileStream(args[0], FileMode.Open);
                try
                {
                    StreamReader t = new StreamReader(fstr);
                    string line;
                    while ((line = t.ReadLine()) != null)
                    {
                        ctr++;
                        Console.WriteLine("{0}:  {1}", ctr, line);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("Exception during read/write: {0}\n", e);
                }
                finally
                {
                    fstr.Close();
                }
            }
        }

        catch (System.IO.FileNotFoundException)
        {
            Console.WriteLine("ListFile could not find the file {0}", args[0]);
        }
        catch (Exception e)
        {
            Console.WriteLine("Exception: {0}\n\n", e);
        }
    }
}
4

1 に答える 1