VB DIR 提取长度超过256字节的文件名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB DIR 提取长度超过256字节的文件名相关的知识,希望对你有一定的参考价值。
VB6 用dir提取文件名
长度超过256字节后会报错
请问如何才能提取到?
一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七
这个文件名超过256字节吧?
使用FindFirstFile这个API函数可以解决此类问题。。。
以下是测试代码,花了半个小时,得加点分。。。
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
'最大路径长度和文件属性常量的定义
Private Const MAX_PATH = 260
Private Const FILE_ATTRIBUTE_ARCHIVE = &H20
Const FILE_ATTRIBUTE_COMPRESSED = &H800
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Const FILE_ATTRIBUTE_HIDDEN = &H2
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_ATTRIBUTE_READONLY = &H1
Const FILE_ATTRIBUTE_SYSTEM = &H4
Const FILE_ATTRIBUTE_TEMPORARY = &H100
'自定义数据类型FILETIME和WIN32_FIND_DATA的定义
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Private Sub Command1_Click()
Dim sPath$, strFileName$
sPath = "C:\\Temp\\一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七.txt"
Debug.Print "文件全路径长度:"; Len(sPath), "文件名长度:"; Len(sPath) - Len("C:\\Temp\\")
Dim lHandle As Long 'FindFirstFileA的句柄
Dim tFindData As WIN32_FIND_DATA '
lHandle = FindFirstFile(sPath, tFindData)
If lHandle = -1 Then
If tFindData.dwFileAttributes <> &H20 Then '文件 &H10 目录
MsgBox "没有找到文件:" & vbCrLf & vbCrLf & sPath
Else
Debug.Print "文件名称:"; tFindData.cFileName
Debug.Print "文件长度:"; tFindData.nFileSizeLow
End If
Else '查询结束或发生错误
MsgBox "查询结束或发生错误"
End If
FindClose lHandle
End Sub
参考技术A 文件名不能超过256个字节的,这是windows的分区格式决定了的,每个分区的头部中都有目录和文件的链表,由于分区格式(FAT32 NTFS)决定了文件和目录的存放的最大长度不能超过256字节因此放心好了,没有单个文件或目录的名称会超过256字节的
当然路径的总长度超过256字节是没有关系的,只是部分编程语言的编译器会处理出错
所以楼上兄弟的程序虽然实现了这个功能,但是没用的,因为在win下目前没有超过256字节的文件名。
如果一个文件名超过了256字节,操作系统不会同意建立,就算写程序通过操作磁盘直接写文件和目录表,也超过不了的。
个人理解,请兄弟们斧正! 参考技术B 好像Windows系统规定的最大文件名就是256个数字吧,你能建立一个256个字节以上的文件?这是不幸的。
回答者: 白木道人 - 高级魔法师 六级 2009-6-21 14:06 参考技术C 当然超过了。一个汉字2个字节,你总共168*2=336个字节的文件名,自然超过了。 参考技术D 好像Windows系统规定的最大文件名就是256个数字吧,你能建立一个256个字节以上的文件?这是不幸的。
BluetoothGattServer.sendResponse 中的数据长度不能超过 20 字节。 (低功耗蓝牙)
【中文标题】BluetoothGattServer.sendResponse 中的数据长度不能超过 20 字节。 (低功耗蓝牙)【英文标题】:The data length in BluetoothGattServer.sendResponse can't exceed 20 bytes. (BLE) 【发布时间】:2015-08-11 08:28:32 【问题描述】:我已经根据g-ortuno 的工作尝试了在 Nexus 6 上运行的 BLE GATT 外设,它工作正常,但是 sendResponse 方法无法发送大于 20 字节的数据。 并为 writeCharacteristic 发现了同样的问题,它的 answer 对我不起作用。有没有人遇到同样的问题并知道可能的解决方案?谢谢。
【问题讨论】:
【参考方案1】:发送超过20字节的数据,需要更改MTU-exchange。
到 API LEVEL 21,你可以使用 requestMtu,它与外围设备协商,你可以定义直到 512 字节。
MTU 值在外设端定义。请记住,您可以发送的数据大小是 MTU-3 字节。
对于小于 21 的 API LEVEL,MTU 是预定义的,您无法修改。
【讨论】:
以上是关于VB DIR 提取长度超过256字节的文件名的主要内容,如果未能解决你的问题,请参考以下文章
当 TLV 字段使用 3 字节长度格式时,CoreNFC 不会读取