1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.IO;
6 using System.Diagnostics;
7
8 namespace test3
9 {
10 class Program
11 {
12 static void Main(string[] args)
13 {
14 bool status = false;
15
16 //连接共享目录
17 status = connectState(@"\\10.0.xx.xxx\ctec2", "waveaccess", "waveaccessxxx");
18 if (status)
19 {
20 //共享文件夹的目录
21 DirectoryInfo theFolder = new DirectoryInfo(@"\\10.0.xx.xxx\ctec2\");
22 string filename = theFolder.ToString();
23 //执行方法
24 TransportLocalToRemote(@"D:\readme1.txt", filename, "readme1.txt"); //实现将本地文件写入到远程服务器
25 TransportRemoteToLocal(@"D:\readme.txt", filename, "readme.txt"); //实现将远程服务器文件写入到本地
26 }
27 else
28 {
29 Console.WriteLine("未能连接!");
30 }
31 Console.WriteLine("成功");
32 Console.ReadKey();
33 }
34
35 public static bool connectState(string path)
36 {
37 return connectState(path, "", "");
38 }
39 /// <summary>
40 /// 连接远程共享文件夹
41 /// </summary>
42 /// <param name="path">远程共享文件夹的路径</param>
43 /// <param name="userName">用户名</param>
44 /// <param name="passWord">密码</param>
45 /// <returns></returns>
46 public static bool connectState(string path, string userName, string passWord)
47 {
48 bool Flag = false;
49 Process proc = new Process();
50 try
51 {
52 proc.StartInfo.FileName = "cmd.exe";
53 proc.StartInfo.UseShellExecute = false;
54 proc.StartInfo.RedirectStandardInput = true;
55 proc.StartInfo.RedirectStandardOutput = true;
56 proc.StartInfo.RedirectStandardError = true;
57 proc.StartInfo.CreateNoWindow = true;
58 proc.Start();
59 string dosLine = "net use " + path + " " + passWord + " /user:" + userName;
60 proc.StandardInput.WriteLine(dosLine);
61 proc.StandardInput.WriteLine("exit");
62 while (!proc.HasExited)
63 {
64 proc.WaitForExit(1000);
65 }
66 string errormsg = proc.StandardError.ReadToEnd();
67 proc.StandardError.Close();
68 if (string.IsNullOrEmpty(errormsg))
69 {
70 Flag = true;
71 }
72 else
73 {
74 throw new Exception(errormsg);
75 }
76 }
77 catch (Exception ex)
78 {
79 throw ex;
80 }
81 finally
82 {
83 proc.Close();
84 proc.Dispose();
85 }
86 return Flag;
87 }
88
89 /// <summary>
90 /// 从远程服务器下载文件到本地
91 /// </summary>
92 /// <param name="src">下载到本地后的文件路径,包含文件的扩展名</param>
93 /// <param name="dst">远程服务器路径(共享文件夹路径)</param>
94 /// <param name="fileName">远程服务器(共享文件夹)中的文件名称,包含扩展名</param>
95 public static void TransportRemoteToLocal(string src, string dst, string fileName) //src:下载到本地后的文件路径 dst:远程服务器路径 fileName:远程服务器dst路径下的文件名
96 {
97 if (!Directory.Exists(dst))
98 {
99 Directory.CreateDirectory(dst);
100 }
101 dst = dst + fileName;
102 FileStream inFileStream = new FileStream(dst, FileMode.Open); //远程服务器文件 此处假定远程服务器共享文件夹下确实包含本文件,否则程序报错
103
104 FileStream outFileStream = new FileStream(src, FileMode.OpenOrCreate); //从远程服务器下载到本地的文件
105
106 byte[] buf = new byte[inFileStream.Length];
107
108 int byteCount;
109
110 while ((byteCount = inFileStream.Read(buf, 0, buf.Length)) > 0)
111 {
112
113 outFileStream.Write(buf, 0, byteCount);
114
115 }
116
117 inFileStream.Flush();
118
119 inFileStream.Close();
120
121 outFileStream.Flush();
122
123 outFileStream.Close();
124
125 }
126
127 /// <summary>
128 /// 将本地文件上传到远程服务器共享目录
129 /// </summary>
130 /// <param name="src">本地文件的绝对路径,包含扩展名</param>
131 /// <param name="dst">远程服务器共享文件路径,不包含文件扩展名</param>
132 /// <param name="fileName">上传到远程服务器后的文件扩展名</param>
133 public static void TransportLocalToRemote(string src, string dst, string fileName) //src
134 {
135 FileStream inFileStream = new FileStream(src, FileMode.Open); //此处假定本地文件存在,不然程序会报错
136
137 if (!Directory.Exists(dst)) //判断上传到的远程服务器路径是否存在
138 {
139 Directory.CreateDirectory(dst);
140 }
141 dst = dst + fileName; //上传到远程服务器共享文件夹后文件的绝对路径
142
143 FileStream outFileStream = new FileStream(dst, FileMode.OpenOrCreate);
144
145 byte[] buf = new byte[inFileStream.Length];
146
147 int byteCount;
148
149 while ((byteCount = inFileStream.Read(buf, 0, buf.Length)) > 0)
150 {
151
152 outFileStream.Write(buf, 0, byteCount);
153
154 }
155
156 inFileStream.Flush();
157
158 inFileStream.Close();
159
160 outFileStream.Flush();
161
162 outFileStream.Close();
163 }
164 }
165 }