首页 > 编程语言 >C#访问本地网络目录及文件

C#访问本地网络目录及文件

时间:2023-09-08 11:23:22浏览次数:63  
标签:用户名 Console string C# public 文件夹 WriteLine 目录 本地网络

来自你的消息:

怎么通过C#访问局域网目录?用户名和密码怎么设置?

来自ChatAI的消息:

要使用C#访问局域网目录,可以使用.NET Framework中的System.Net命名空间提供的类和方法来实现。你可以使用NetworkCredential类设置用户名和密码进行身份验证。下面是一个简单的示例代码:

using System;
using System.Net;

class Program
{
    static void Main(string[] args)
    {
        string remoteUri = "file://192.168.1.100/shared_folder/file.txt";
        string fileName = "file.txt";
        string userName = "yourUsername";
        string password = "yourPassword";

        // 创建一个WebClient实例,并设置用户名和密码
        WebClient client = new WebClient();
        client.Credentials = new NetworkCredential(userName, password);

        try
        {
            // 下载文件
            client.DownloadFile(remoteUri, fileName);
            Console.WriteLine("文件下载成功!");
        }
        catch (Exception ex)
        {
            Console.WriteLine("发生错误: " + ex.Message);
        }
    }
}

请将remoteUri替换为你要访问的目录或文件的路径,将userNamepassword替换为正确的用户名和密码。这样,你就可以使用指定的用户名和密码访问局域网目录。

来自你的消息:

C#怎么通过用户名密码访问网络文件夹和文件?

来自ChatAI的消息:

在C#中,你可以使用System.Net命名空间提供的WebClient类来通过用户名和密码访问网络文件夹和文件。以下是一个示例代码,演示了如何通过用户名和密码访问网络文件夹和文件:

using System;
using System.Net;

class Program
{
    static void Main(string[] args)
    {
        // 设置目标文件夹和文件路径
        string folderUrl = "http://example.com/files/";
        string fileUrl = "http://example.com/files/file.txt";

        // 设置需要使用的用户名和密码
        string userName = "your_username";
        string password = "your_password";

        // 创建一个WebClient实例,并设置用户名和密码
        WebClient client = new WebClient();
        client.Credentials = new NetworkCredential(userName, password);

        try
        {
            // 访问文件夹
            string[] folderContent = client.DownloadString(folderUrl).Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
            Console.WriteLine("文件夹内容:");
            foreach (string item in folderContent)
            {
                Console.WriteLine(item);
            }

            Console.WriteLine();

            // 下载文件
            client.DownloadFile(fileUrl, "local_file.txt");
            Console.WriteLine("文件下载成功!");
        }
        catch (WebException ex)
        {
            Console.WriteLine("发生错误: " + ex.Message);
        }
    }
}

在示例代码中,folderUrl是目标文件夹的URL,fileUrl是目标文件的URL。你可以将它们替换为你要访问的实际URL。然后,使用userNamepassword设置用户名和密码。使用WebClient类的DownloadString方法可以获取文件夹的内容,使用DownloadFile方法可以下载文件。请将示例代码中的用户名、密码和URL替换为你要访问的网络文件夹和文件相关的凭据和URL。

来自你的消息:

C#怎么通过用户名密码访问本地网络文件夹和文件?

来自ChatAI的消息:

在C#中,如果你要访问本地网络文件夹和文件,并提供用户名和密码进行身份验证,可以使用System.IO命名空间提供的类和方法。以下是一个示例代码,演示了如何通过用户名和密码访问本地网络文件夹和文件:

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // 设置本地网络文件夹路径
        string folderPath = @"\\server\share\folder\subfolder\";

        // 设置需要使用的用户名和密码
        string userName = "your_username";
        string password = "your_password";

        try
        {
            // 使用用户名和密码进行身份验证
            using (new NetworkConnection(folderPath, new NetworkCredential(userName, password)))
            {
                // 访问文件夹
                string[] folderContent = Directory.GetFiles(folderPath);
                Console.WriteLine("文件夹内容:");
                foreach (string file in folderContent)
                {
                    Console.WriteLine(file);
                }

                Console.WriteLine();

                // 访问文件
                string filePath = Path.Combine(folderPath, "file.txt");
                if (File.Exists(filePath))
                {
                    Console.WriteLine("文件存在!");
                }
                else
                {
                    Console.WriteLine("文件不存在!");
                }

                Console.WriteLine();
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("发生错误: " + ex.Message);
        }
    }
}

public class NetworkConnection : IDisposable
{
    string _networkName;

    public NetworkConnection(string networkPath, NetworkCredential credentials)
    {
        _networkName = networkPath;

        var netResource = new NetResource
        {
            Scope = ResourceScope.GlobalNetwork,
            ResourceType = ResourceType.Disk,
            DisplayType = ResourceDisplaytype.Share,
            RemoteName = networkPath
        };

        var userName = string.IsNullOrEmpty(credentials.Domain)
            ? credentials.UserName
            : $@"{credentials.Domain}\{credentials.UserName}";

        var result = WNetAddConnection2(
            netResource,
            credentials.Password,
            userName,
            0);

        if (result != 0)
        {
            throw new Win32Exception(result);
        }
    }

    ~NetworkConnection()
    {
        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
    }
}

在示例代码中,folderPath是本地网络文件夹的路径,你需要将其替换为你实际要访问的路径。然后,使用userNamepassword设置需要使用的用户名和密码。通过使用NetworkConnection类进行身份验证,它使用指定的用户名和密码尝试建立到本地网络文件夹的连接。在使用using语句创建NetworkConnection实例之后,你可以使用Directory.GetFiles方法来获取文件夹的内容,并使用File.Exists方法检查文件是否存在。请将示例代码中的用户名、密码和文件夹路径替换为你要访问的本地网络文件夹和文件相关的

标签:用户名,Console,string,C#,public,文件夹,WriteLine,目录,本地网络
From: https://www.cnblogs.com/wanghaibin/p/17687119.html

相关文章

  • Css 修改图标颜色_Css 修改图片颜色_Css控制图片颜色
    一、Css3mask修改图标颜色(推荐)CSS3mask默认是基于透明度实现遮罩效果的。也就是实色区域显示,透明区域隐藏。因此,我们只需要把目标图标颜色#f4615c作为背景色,然后原始图标(无论什么颜色都可以)作为遮罩图片,效果就出来了。<!DOCTYPEhtml><htmllang="en"><head><meta......
  • Windows访问Linux下的FTP服务器(Centos和Uuntu)
    centos7.9版本1.下载FTP离线安装包:http://rpmfind.net/linux/rpm2html/search.php?query=vsftpd(x86-64)   选择最后一个 vsftpd-3.0.2-28.el7.x86_64.rpm2.检查是否已经安装了vsftprpm-qa|grepvsftpd出现提示vsftpd版本号则表示......
  • nginx + php procedures
    https://mkyong.com/nginx/nginx-php-on-windows/https://www.youtube.com/watch?v=loSNnt9ZzWI&ab_channel=javafrmhowtostopnginx?nginx-sstophowtostartnginx?startnginx......
  • arm架构docker安装nacos
    前言搞了个hk1box,装了armbian系统,想用这个当服务器调试微服务,需要安装nacos。尝试安装非docker版本的nacos,去github下载arm版本的并且放到linux下面,运行的时候报tomcat错误,装了tomcat后还是报错,改了很多设置老是跑不了,于是决定用docker版本。1、挂载目录mkdir-p/home/nacos/l......
  • effective c++笔记
    一.截图1. public继承,No32,Pg155 2.不重定义继承而来的缺省参数值,No37,Pg183 ......
  • Office365邮箱未授权已失效邮箱,开启自动答复
    对于已经离职的员工,有些顾客并不知道已经离职,这时可以通过开启自动答复,然后自定义邮箱内容通知顾客1、离职的邮箱添加 License2、进入 Exchangeadmincenter把邮箱转为共享邮箱3、进入共享邮箱,开启自动答复并定义回复内容......
  • postgis数据库导出csv表再导入postgis
    1、导出csv表fromsettings_Addressimport*fromsqlalchemyimportcreate_engine,MetaDataimportpandasaspddefcreate_conn(Postgis_user,Postgis_password,Postgis_host,Postgis_port,dbname_PG):#returncreate_engine('Postgis+pyPostgis://{}:{}@{}:{}/......
  • vscode插件开发笔记
    https://code.visualstudio.com/api/get-started/your-first-extensionnpminstall-gyogenerator-codeyocode正常开发选择ts或者js结果如下,package.json的contributes.commands节点控制命令生命,contributes.menus定义菜单extension.ts里面注册事件exportfunctionactivat......
  • 【前端】CSS-flexbox弹性盒模型布局
    目录一、前言二、flexbox简介三、属性1、容器属性2、容器成员属性四、容器属性的作用1、flex-direction①、定义②、语句1)、属性值③、代码示例1)、flex-direction:row2)、flex-direction:row-reverse3)、flex-direction:column4)、flex-direction:column-reverse2、flex-wrap①、......
  • 【前端】CSS3新特性
    目录一、前言二、伪元素选择器1、选择器2、注意事项3、代码示例三、伪元素清除浮动1、第一种伪元素清除浮动2、第二种伪元素清除浮动四、CSS3盒子模型1、box-sizing:content-box2、box-sizing:border-box五、CSS3图片模糊处理1、图片变模糊①、CSS3滤镜filter②、语法③、实例实现2......