Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
刘韬
/
1069_MIMO_PlUS
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit d546aba9
由
LN
编写于
2024-12-07 17:16:09 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
配置文件读取修改
1 个父辈
371a409a
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
107 行增加
和
4 行删除
DeviceLibrary/theMachine/RobotManage.cs
LoadCVSLibrary/CSVReaderBase.cs
DeviceLibrary/theMachine/RobotManage.cs
查看文件 @
d546aba
...
...
@@ -73,7 +73,7 @@ namespace DeviceLibrary
try
{
mainMachine
=
null
;
string
configFile
=
Path
.
Combine
(
baseDir
,
"
c
onfig\\Config.csv"
);
string
configFile
=
Path
.
Combine
(
baseDir
,
"
C
onfig\\Config.csv"
);
Config
=
new
Robot_Config
(
0
,
""
,
configFile
);
Config
=
(
Robot_Config
)
CSVConfigReader
.
LoadConfig
(
Config
);
...
...
LoadCVSLibrary/CSVReaderBase.cs
查看文件 @
d546aba
...
...
@@ -64,17 +64,31 @@ namespace OnlineStore.LoadCSVLibrary
}
}
return
proCsvMap
;
}
}
/// <summary>
/// 读取一个csv文件的所有内容
/// </summary>
protected
static
string
[]
ReadCSVFile
(
string
filePath
)
protected
static
string
[]
ReadCSVFile
(
string
filePath
,
Encoding
encoding
=
null
)
{
if
(!
File
.
Exists
(
filePath
))
{
throw
new
FileNotFoundException
(
"未找到文件:"
+
filePath
);
}
string
[]
lines
=
File
.
ReadAllLines
(
filePath
,
Encoding
.
GetEncoding
(
"gbk"
));
if
(
encoding
==
null
)
{
if
(!
GetFileType
(
filePath
).
Equals
(
Encoding
.
UTF8
))
{
encoding
=
Encoding
.
GetEncoding
(
"gbk"
);
}
else
{
encoding
=
Encoding
.
UTF8
;
}
}
string
[]
lines
=
File
.
ReadAllLines
(
filePath
,
encoding
);
return
lines
;
}
/// <summary>
...
...
@@ -168,6 +182,95 @@ namespace OnlineStore.LoadCSVLibrary
}
return
titleIndex
;
}
/// <summary>
/// 给定文件的路径,读取文件的二进制数据,判断文件的编码类型
/// </summary>
/// <param name=“FILE_NAME“>文件路径</param>
/// <returns>文件的编码类型</returns>
public
static
System
.
Text
.
Encoding
GetFileType
(
string
FILE_NAME
)
{
FileStream
fs
=
new
FileStream
(
FILE_NAME
,
FileMode
.
Open
,
FileAccess
.
Read
);
Encoding
r
=
GetStreamType
(
fs
);
fs
.
Close
();
return
r
;
}
/// <summary>
/// 通过给定的文件流,判断文件的编码类型
/// </summary>
/// <param name=“fs“>文件流</param>
/// <returns>文件的编码类型</returns>
public
static
System
.
Text
.
Encoding
GetStreamType
(
FileStream
fs
)
{
byte
[]
Unicode
=
new
byte
[]
{
0xFF
,
0xFE
,
0x41
};
byte
[]
UnicodeBIG
=
new
byte
[]
{
0xFE
,
0xFF
,
0x00
};
byte
[]
UTF8
=
new
byte
[]
{
0xEF
,
0xBB
,
0xBF
};
//带BOM
Encoding
reVal
=
Encoding
.
Default
;
BinaryReader
r
=
new
BinaryReader
(
fs
,
System
.
Text
.
Encoding
.
Default
);
int
i
;
int
.
TryParse
(
fs
.
Length
.
ToString
(),
out
i
);
byte
[]
ss
=
r
.
ReadBytes
(
i
);
if
(
IsUTF8Bytes
(
ss
)
||
(
ss
[
0
]
==
0xEF
&&
ss
[
1
]
==
0xBB
&&
ss
[
2
]
==
0xBF
))
{
reVal
=
Encoding
.
UTF8
;
}
else
if
(
ss
[
0
]
==
0xFE
&&
ss
[
1
]
==
0xFF
&&
ss
[
2
]
==
0x00
)
{
reVal
=
Encoding
.
BigEndianUnicode
;
}
else
if
(
ss
[
0
]
==
0xFF
&&
ss
[
1
]
==
0xFE
&&
ss
[
2
]
==
0x41
)
{
reVal
=
Encoding
.
Unicode
;
}
r
.
Close
();
return
reVal
;
}
/// <summary>
/// 判断是否是不带 BOM 的 UTF8 格式
/// </summary>
/// <param name=“data“></param>
/// <returns></returns>
private
static
bool
IsUTF8Bytes
(
byte
[]
data
)
{
int
charByteCounter
=
1
;
//计算当前正分析的字符应还有的字节数
byte
curByte
;
//当前分析的字节.
for
(
int
i
=
0
;
i
<
data
.
Length
;
i
++)
{
curByte
=
data
[
i
];
if
(
charByteCounter
==
1
)
{
if
(
curByte
>=
0x80
)
{
//判断当前
while
(((
curByte
<<=
1
)
&
0x80
)
!=
0
)
{
charByteCounter
++;
}
//标记位首位若为非0 则至少以2个1开始 如:110XXXXX...........1111110X
if
(
charByteCounter
==
1
||
charByteCounter
>
6
)
{
return
false
;
}
}
}
else
{
//若是UTF-8 此时第一位必须为1
if
((
curByte
&
0xC0
)
!=
0x80
)
{
return
false
;
}
charByteCounter
--;
}
}
if
(
charByteCounter
>
1
)
{
throw
new
Exception
(
"非预期的byte格式"
);
}
return
true
;
}
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论