HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2020-09-22 ade5917841b0fdcb1df7353ef7c56b1a1bdc9282
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
using System;
using System.Collections.Generic;
 
namespace Shared.Common
{
    public class Global
    {
        /// <summary>
        /// 获取住宅文件夹下面的文件
        /// </summary>
        /// <param name="fileName">File name.</param>
        public static byte[] ReadFileByHomeId(string fileName)
        {
 
            var path = System.IO.Path.Combine(Config.Instance.FullPath, fileName);
            return Shared.IO.FileUtils.ReadFile(path);
        }
 
        public static List<string> FileListByHomeId()
        {
            var list = new List<string> { };
            var path = Config.Instance.FullPath;
            if (!System.IO.Directory.Exists(path)) {
                return new List<string> { };
            }
            var files = System.IO.Directory.GetFiles(path);
            foreach (var file in files)
            {
                var f = file.Substring(path.Length + 1);
                System.Console.WriteLine(f);
                list.Add(f);
            }
            return list;
        }
 
        /// <summary>
        /// 写文件到住宅文件夹目录
        /// </summary>
        /// <param name="fileName">File name.</param>
        /// <param name="bytes">Bytes.</param>
        public static void WriteFileByBytesByHomeId(string fileName, byte[] bytes)
        {
            //如果没有存在住宅目录,先创建
            if (!System.IO.Directory.Exists(Config.Instance.FullPath))
            {
                System.IO.Directory.CreateDirectory(Config.Instance.FullPath);
            }
            var path = System.IO.Path.Combine(Config.Instance.FullPath, fileName);
            Shared.IO.FileUtils.WriteFileByBytes(path, bytes);
        }
        /// <summary>
        /// 删除住宅下面的文件
        /// </summary>
        /// <param name="fileName">File name.</param>
        public static void DeleteFilebyHomeId(string fileName)
        {
            var path = System.IO.Path.Combine(Config.Instance.FullPath, fileName);
            System.IO.File.Delete(path);
        }
 
        /// <summary>
        /// 是否存在当前文件
        /// </summary>
        /// <param name="fileName">File name.</param>
        public static bool IsExistsByHomeId(string fileName)
        {
            var path = System.IO.Path.Combine(Config.Instance.FullPath, fileName);
            return System.IO.File.Exists(path);
        }
 
        /// <summary>
        /// 更新文件名称
        /// </summary>
        /// <param name="oldFilePath">Old file path.</param>
        /// <param name="newFilePath">New file path.</param>
        public static void ReNameFileByHomeId(string oldFilePath, string newFilePath)
        {
            if (oldFilePath == newFilePath)
            {
                return;
            }
 
            var fileInfo = new System.IO.FileInfo(Config.Instance.FullPath + oldFilePath);
            if (fileInfo.Exists)
            {
                DeleteFilebyHomeId(newFilePath);
                fileInfo.MoveTo(Config.Instance.FullPath + newFilePath);
            }
        }
 
        public static void CreateHomeDirectory(string homeId)
        {
            var path= System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Config.Instance.Guid, homeId);
            if (!System.IO.Directory.Exists(path))
            {
                System.IO.Directory.CreateDirectory(path);
            }
        }
 
        /// <summary>
        /// 在当前住宅文件夹下创建一个空的文件夹(tz)
        /// </summary>
        /// <param name="directoryName">需要创建的文件夹名字</param>
        /// <param name="clear">如果文件夹存在,是否需要清空文件夹</param>
        public static void CreateEmptyDirectory(string directoryName, bool clear = false)
        {
            string creatName = Config.Instance.FullPath;
            creatName = System.IO.Path.Combine(creatName, directoryName);
            if (!System.IO.Directory.Exists(creatName))
            {
                System.IO.Directory.CreateDirectory(creatName);
            }
            else if (clear == true)
            {
                //如果存在,则清空全部文件
                var files = System.IO.Directory.GetFiles(creatName);
                foreach (var file in files)
                {
                    System.IO.File.Delete(file);
                }
            }
        }
 
        /// <summary>
        /// 将信息写入指定的文件夹里(根目录为当前住宅的文件夹)(tz)
        /// </summary>
        /// <param name="directoryName">指定的文件夹路径</param>
        /// <param name="fileName">文件名</param>
        /// <param name="bytes">内容</param>
        public static void WriteFileToDirectoryByBytes(string directoryName, string fileName, byte[] bytes)
        {
            //先去创建它吧
            Global.CreateEmptyDirectory(directoryName);
 
            //拼接路径
            string fullName = Config.Instance.FullPath;
            fullName = System.IO.Path.Combine(fullName, directoryName);
            fullName = System.IO.Path.Combine(fullName, fileName);
            //写入内容
            Shared.IO.FileUtils.WriteFileByBytes(fullName, bytes);
        }
 
        /// <summary>
        /// 读取指定的文件夹里的指定的文件(根目录为当前住宅的文件夹)(tz)
        /// </summary>
        /// <param name="directoryName">指定的文件夹路径</param>
        /// <param name="fileName">文件名</param>
        public static byte[] ReadFileByDirectory(string directoryName, string fileName)
        {
            //拼接路径
            string fullName = Config.Instance.FullPath;
            fullName = System.IO.Path.Combine(fullName, directoryName);
            fullName = System.IO.Path.Combine(fullName, fileName);
            if (System.IO.File.Exists(fullName) == false)
            {
                return null;
            }
            return Shared.IO.FileUtils.ReadFile(fullName);
        }
 
        /// <summary>
        /// 移动文件(tz)
        /// </summary>
        /// <param name="oldFile">需要移动的文件(FullName)</param>
        /// <param name="newFile">要移动到的位置(FullName)</param>
        public static void MoveFileToDirectory(string oldFile, string newFile)
        {
            //先删除
            if (System.IO.File.Exists(newFile) == true)
            {
                System.IO.File.Delete(newFile);
            }
            System.IO.File.Move(oldFile, newFile);
        }
 
        /// <summary>
        /// 将指定文件夹里面的全部文件移动到当前住宅的文件夹内(tz)
        /// </summary>
        /// <param name="directory"></param>
        /// <param name="deleteDirectory">处理完之后,是否把文件夹删除</param>
        public static void MoveDirectoryFileToHomeDirectory(string directory, bool deleteDirectory = false)
        {
            string rootPath = Config.Instance.FullPath;
            string fulldirectory = System.IO.Path.Combine(rootPath, directory);
 
            if (System.IO.Directory.Exists(fulldirectory) == false)
            {
                return;
            }
 
            var files = System.IO.Directory.GetFiles(fulldirectory);
            var listFile = new List<string>();
            foreach (var file in files)
            {
                var f = file.Substring(fulldirectory.Length + 1);
                listFile.Add(f);
            }
 
            foreach (var file in listFile)
            {
                string oldFile = System.IO.Path.Combine(fulldirectory, file);
                string newFile = System.IO.Path.Combine(rootPath, file);
                //移动文件
                Global.MoveFileToDirectory(oldFile, newFile);
            }
            if (deleteDirectory == true)
            {
                System.IO.Directory.Delete(fulldirectory);
            }
        }
    }
}