猿问

如何使用 StreamReader 在远程服务器上访问和读取文件?

我在远程服务器上有一个文件,我想读取其内容。这是我想要实现的一些代码示例:

StreamReader str = new StreamReader(@"\\192.168.0.1\C$\Test\test.txt");
str.ReadToEnd();

这段代码抛出:

System.IO.IOException:“用户名或密码不正确”。

我怎样才能传递任何凭证?

我的最终结果应该是我正在尝试使用以下命令访问此 192.168.0.1

user: adminpassword: 123456

我搜索过StreamReader文档但没有任何结果。


慕盖茨4494581
浏览 122回答 2
2回答

慕桂英546537

我最终使用了以下代码:    public class ConnectToSharedFolder : IDisposable    {        readonly string _networkName;        public ConnectToSharedFolder(string networkName, NetworkCredential credentials)        {            _networkName = networkName;            var netResource = new NetResource            {                Scope = ResourceScope.GlobalNetwork,                ResourceType = ResourceType.Disk,                DisplayType = ResourceDisplaytype.Share,                RemoteName = networkName            };            var userName = string.IsNullOrEmpty(credentials.Domain)                ? credentials.UserName                : string.Format(@"{0}\{1}", credentials.Domain, credentials.UserName);            var result = WNetAddConnection2(                netResource,                credentials.Password,                userName,                0);            if (result != 0)            {                throw new Win32Exception(result, "Error connecting to remote share");            }        }        ~ConnectToSharedFolder()        {            Dispose(false);        }        public void Dispose()        {            Dispose(true);            GC.SuppressFinalize(this);        }        protected virtual void Dispose(bool disposing)        {            WNetCancelConnection2(_networkName, 0, true);        }        [DllImport("mpr.dll")]        private static extern int WNetAddConnection2(NetResource netResource,            string password, string username, int flags);        [DllImport("mpr.dll")]        private static extern int WNetCancelConnection2(string name, int flags,            bool force);        [StructLayout(LayoutKind.Sequential)]        public class NetResource        {            public ResourceScope Scope;            public ResourceType ResourceType;            public ResourceDisplaytype DisplayType;            public int Usage;            public string LocalName;            public string RemoteName;            public string Comment;            public string Provider;        }        public enum ResourceScope : int        {            Connected = 1,            GlobalNetwork,            Remembered,            Recent,            Context        };        public enum ResourceType : int        {            Any = 0,            Disk = 1,            Print = 2,            Reserved = 8,        }        public enum ResourceDisplaytype : int        {            Generic = 0x0,            Domain = 0x01,            Server = 0x02,            Share = 0x03,            File = 0x04,            Group = 0x05,            Network = 0x06,            Root = 0x07,            Shareadmin = 0x08,            Directory = 0x09,            Tree = 0x0a,            Ndscontainer = 0x0b        }    }}并使用这种方式:            using (new ConnectToSharedFolder(networkPath, credentials))            {                StreamReader str = new StreamReader(@"\\192.168.0.1\C$\Test\test.txt");                var x = str.ReadToEnd();                Console.WriteLine(x);这段代码正是针对我的问题而设计的!

临摹微笑

在访问该文件之前,您必须进行模拟。
随时随地看视频慕课网APP
我要回答