精华内容
下载资源
问答
  • vb打开ftp服务器文件路径 内容精选换一换该任务指导用户使用Loader将数据从HDFS/OBS导出到SFTP服务器。创建或获取该任务中创建Loader作业的业务用户和密码。确保用户已授权访问作业执行时操作的HDFS/OBS目录和数据。...

    vb打开ftp服务器文件路径 内容精选

    换一换

    c8a5a5028d2cabfeeee0907ef5119e7e.png

    该任务指导用户使用Loader将数据从HDFS/OBS导出到SFTP服务器。创建或获取该任务中创建Loader作业的业务用户和密码。确保用户已授权访问作业执行时操作的HDFS/OBS目录和数据。获取SFTP服务器使用的用户和密码,且该用户具备SFTP服务器数据导出目录的写入权限。检查磁盘空间,确保没有出现告警且余量满足导入、导出数据的大小

    用户在FusionInsight Manager界面配置监控指标转储后,系统按转储时间间隔(默认60秒)周期性检测监控指标转储结果,转储失败时产生该告警。转储成功后,告警恢复。监控指标转储失败会影响上层管理系统无法获取到FusionInsight Manager系统的监控指标。无法连接服务器。无法访问服务器上保存路径。上传监控指标文件失败

    vb打开ftp服务器文件路径 相关内容

    文件作用:可以关闭/打开监听端口、指定监听端口、指定监听IP等。文件路径:在运行环境上,在~/ide_daemon目录下查看ide_daemon.cfg配置文件,~表示ada进程运行用户的家目录,例如:启动ada进程的用户是HwHiAiUser,则该路径为“/home/HwHiAiUser/ide_daemon”。在安装Toolkit组件

    文件作用:可以关闭/打开监听端口、指定监听端口、指定监听IP等。文件路径:在运行环境上,在~/ide_daemon目录下查看ide_daemon.cfg配置文件,~表示ada进程运行用户的家目录,例如:启动ada进程的用户是HwHiAiUser,则该路径为“/home/HwHiAiUser/ide_daemon”。在安装Toolkit组件

    vb打开ftp服务器文件路径 更多内容

    f37b9b09b23d9b59f1b2d6c6affcfacc.png

    方法一:在VSCode上选择“文件 > 首选项 > 设置”,再选择“工作区”,并在输入框搜索“kunpeng.remote.ssh.machineinfo”,单击“在settings.json中编辑”后生成settings.json文件。如图1所示。生成settings.json文件方法二:在VSCode上选择“资源管理器”,找到“.vs

    39119fac39059b64817699818002d26a.png

    该任务指导用户使用Loader将数据从HBase导出到SFTP服务器。创建或获取该任务中创建Loader作业的业务用户和密码。确保用户已授权访问作业执行时操作的HBase表或phoenix表。获取SFTP服务器使用的用户和密码,且该用户具备SFTP服务器数据导出目录的写入权限。检查磁盘空间,确保没有出现告警且余量满足导入、导出数据的大小。

    b5693ff7a1d6bd5360d83fe2bfafdfb3.png

    该任务指导用户使用Loader将数据从Hive导出到SFTP服务器。创建或获取该任务中创建Loader作业的业务用户和密码。确保用户已授权访问作业中指定的Hive表的权限。获取SFTP服务器使用的用户和密码,且该用户具备SFTP服务器数据导出目录的写入权限。检查磁盘空间,确保没有出现告警且余量满足导入、导出数据的大小。如果设置的任务需要使

    55a2638139d68369d49b3058cd5d88e8.png

    该任务指导用户使用Loader将数据从Spark导出到SFTP服务器。创建或获取该任务中创建Loader作业的业务用户和密码。确保用户已授权访问作业中指定的Spark表的权限。获取SFTP服务器使用的用户和密码,且该用户具备SFTP服务器数据导出目录的写入权限。检查磁盘空间,确保没有出现告警且余量满足导入、导出数据的大小。如果设置的任务需

    d151cefbfd54a36eb240c5cc85e1151a.png

    该任务指导用户使用Loader将数据从SFTP服务器导入到HBase。创建或获取该任务中创建Loader作业的业务用户和密码。确保用户已授权访问作业执行时操作的HBase表或phoenix表。获取SFTP服务器使用的用户和密码,且该用户具备SFTP服务器上源文件的读取权限。若源文件在导入后文件名要增加后缀,则该用户还需具备源文件的写入权限

    628a76026f26a9b0192a8fa75416b71f.png

    系统管理员可以通过FusionInsight Manager创建恢复Yarn任务,只支持创建任务手动恢复数据。只支持进行数据备份时的系统版本与当前系统版本一致时的数据恢复。当业务正常时需要恢复数据,建议手动备份最新管理数据后,再执行恢复数据操作。否则会丢失从备份时刻到恢复时刻之间的数据。建议一个恢复任务只恢复一个组件的元数据,避免因停止某

    ef7fa0a88cabe2097a016125d8d62832.png

    文件作用:可以关闭/打开监听端口、指定监听端口、指定监听IP等。文件路径:在运行环境上,在~/ide_daemon目录下查看ide_daemon.cfg配置文件,~表示ada进程运行用户的家目录,例如:启动ada进程的用户是HwHiAiUser,则该路径为“/home/HwHiAiUser/ide_daemon”。在安装Toolkit组件

    bde960fb156614c03a124ff840e10cb0.png

    在http://releases.linaro.org/components/toolchain/binaries/latest/aarch64-linux-gnu/ 中选择下载gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz。$tar -xvf gcc-linaro-6.3

    3534dd170a545b94273de228dc486b40.png

    已获取到Android SDK镜像包,并通过MobaXterm工具上传到服务器上的/home目录下。获取方法请参见获取软件包。请使用与服务器类型相匹配的SDK包。添加完成后如下图所示:ANDROID_SDK_ROOT环境配置为Android SDK的文件夹路径,需要和实际路径保持一致。

    0b0fd50cfcc497558515f132e9f0a09e.png

    部署提供可视化、一键式部署服务,支持并行部署和流水线无缝集成,实现部署环境标准化和部署过程自动化。本节通过以下六步介绍如何使用部署服务将归档在软件发布库的软件包部署到云主机上。第一步:准备弹性云服务器第二步:添加授信主机第三步:新建部署任务第四步:执行部署任务第五步:验证部署结果“超级冷笑话网站”是一个Web项目,需要部署到服务器上才可以

    b7d83a2380c86c6f5139c7b0f3df6b7a.png

    方法一:在VSCode上选择“文件 > 首选项 > 设置”,再选择“工作区”,并在输入框搜索“kunpeng.remote.ssh.machineinfo”,单击“在settings.json中编辑”后生成settings.json文件。如图1所示。生成settings.json文件方法二:在VSCode上选择“资源管理器”,找到“.vs

    展开全文
  • VB.NET判断一个路径文件是否存在

    千次阅读 2013-12-05 17:02:47
    使用文件系统操控文件路径的能力是任何程序的一个重要功能。 在本文所介绍的技巧中,我们将检测VB.NET 如何与文件系统进行作用。 通过现有类、方法和属性示例给出简便方法完成必须的功能。 为了能够操作文件系统...
    使用文件系统操控文件和路径的能力是任何程序的一个重要功能。
    在本文所介绍的技巧中,我们将检测VB.NET 如何与文件系统进行作用。
    通过现有类、方法和属性示例给出简便方法完成必须的功能。

    为了能够操作文件系统,我们需要用到System.IO命名空间。
    因此,必须在模块的顶部导入System.IO。我们重点关注FileInfo类,此类允许访问和操作文件系统中的文件。
    并且允许确定文件的属性和DirectoryInfo,而DirectoryInfo类允许访问操作路径和确定属性。

    判断文件是否存在

    下面的代码给出了判断文件是否存在和检查其属性的代码。
    在此示例中,我们定义了sFileName变量保存文件名和地址。
    然后新建FileInfo类示例,此类接受完整文件路径作为参数。
    接着,使用Exists属性判断文件是否存在。

    如果存在文件,则显示文件创建的日期和时间;如果文件不存在,则给出不能定位文件的信息。

    Private Function DetermineIfFileExists() As Integer

    Dim sFileName As String

    sFileName = "C:/text1.txt"

    Dim fFile As New FileInfo(sFileName)

    If Not fFile.Exists Then

    MessageBox.Show("File Not Found")

    Else

    MessageBox.Show("File Found. File was created on: " & fFile.CreationTime)

    End If

    End Function

    判断路径是否存在

    下面的代码给出了判断路径是否存在和检查其属性的代码。
    我们定义了sDirName变量保存名字和路径的地址。
    然后新建DirectoryInfo类示例,此类接受全路径名作为参数,接下来使用Exists属性判断路径是否存在。

    如果存在,则显示其最近一次被访问的日期和时间;如果不存在,则给出不能定位路径的信息。

    Private Function DetermineIfDirectoryExists() As Integer

    Dim sDirName As String

    sDirName = "C:/temp"

    Dim dDir As New DirectoryInfo(sDirName)

    If Not dDir.Exists Then

    MessageBox.Show("Directory Not Found")

    Else

    MessageBox.Show("Directory Found. Directory was last accessed on: " & dDir.LastAccessTime)

    End If

    End Function
    展开全文
  • vb.net 获取文件属性

    2009-03-02 16:25:14
    获取文件路径、大小、创建日期、最近访问时间、只读、隐藏等属性。
  • Windows编程中,需要获取一个已打开窗口程序的完整路径,以便下次用ShellExecute 函数直接打开。 能实现这一目标的Windows API函数有3个: GetModuleFileName、GetProcessImageFileName 和...

    Windows编程中,需要获取一个已打开窗口程序的完整路径,以便下次用ShellExecute 函数直接打开。

    能实现这一目标的Windows API函数有3个: GetModuleFileName、 GetProcessImageFileName 和QueryFullProcessImageName 。网上的API函数手册大多只能查到第一个,后面两个只能百度查找调用方法,然而却都讲得不清不楚。 本人是一个业余编程爱好者,通过艰难摸索,走了很多弯路,终于搞清了使用方法。现班门弄斧如下:

    这三个函数的功能是一样的,只是适用于不同的Windows系统。换言之:用GetModuleFileName函数在Windows2000系统下能得到正确结果,但在Windows7系统下却不行;用QueryFullProcessImageName函数在Windows7系统下能得到正确结果,但在WindowsXP系统却提示Run-time error '453':Can't find DLL entry point QueryFullProcessImageNameA in kernel32错误。

    根据微软官方的说法,要根据不同的Windows系统,使用相应的API函数,以保证结果正确:

    Windows 2000        建议 GetModuleFileName()
    Windows XP x32    建议  GetProcessImageFileName()
    Windows XP x64    建议  GetProcessImageFileName()
    Windows Vista       建议  QueryFullProcessImageName()
    Windows 7 以后     建议  QueryFullProcessImageName()

    这就牵扯出其他需要解决的问题:一个是要判断操作系统版本(具体参看https://docs.microsoft.com/zh-cn/windows/win32/sysinfo/operating-system-version?redirectedfrom=MSDN),以决定用哪个函数;二个是要对返回的结果进行转化,统一格式(因为前两个函数返回的结果是象这样的:\Device\HarddiskVolume1\Windows\System32\notepad.exe,而不是象C:\Windows\System32\notepad.exe)。现在一个一个来解决:

    '第一步,在VB中申明以下九个API函数:
    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Private Declare Function QueryFullProcessImageName Lib "kernel32" Alias "QueryFullProcessImageNameA" (ByVal hProcess As Long, ByVal dwFlags As Long, ByVal lpExeName As String, lpdwSize As Long) As Boolean
    Private Declare Function GetProcessImageFileName Lib "PSAPI.DLL" Alias "GetProcessImageFileNameA" (ByVal hProcess As Long, ByVal lpImageName As String, nSize As Long) As Long
    Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function QueryDosDevice Lib "kernel32" Alias "QueryDosDeviceA" (ByVal lpDeviceName As String, ByVal lpTargetPath As String, ByVal ucchMax As Long) As Long
    Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
    Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
    '定义一个进程的访问权限常量,表示可以具有所有权限
    Private Const PROCESS_ALL_ACCESS = &H1F0FFF
    Private Const PROCESS_NAME_NATIVE = &H1
    '获取操作系统版本号GetVersionEx函数的参数是自定义类型,需要进行如下定义
    Private Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long
    szCSDVersion As String * 128    ' Maintenance string for PSS usage
    End Type
    '第二步: 编写操作系统判断函数
    Private Function GetWindowsMajorVersion()
        Dim xx As OSVERSIONINFO
        '在正式调用函数之前,必须先将这个结构的dwOSVersionInfoSize字段设为结构的大小(148)
        xx.dwOSVersionInfoSize = 148
        GetVersionEx xx
        Debug.Print "xx.dwBuildNumber:" & xx.dwBuildNumber
        Debug.Print "xx.dwMajorVersion:" & xx.dwMajorVersion
        Debug.Print "xx.dwMinorVersion:" & xx.dwMinorVersion
        Debug.Print "xx.dwOSVersionInfoSize:" & xx.dwOSVersionInfoSize
        Debug.Print "xx.dwPlatformId:" & xx.dwPlatformId
        Debug.Print "xx.szCSDVersion:" & xx.szCSDVersion
        GetWindowsMajorVersion = xx.dwMajorVersion
    End Function
    '第三步:编写根据窗口类名、标题或句柄获取完整路径函数
    '参数1【可选】:窗口类名(忽略填0)
    '参数2【可选】:窗口标题(忽略填0)
    '参数3【可选】:窗口句柄(忽略填0。若不为0,则参数1、2被忽略)
    Private Function GetWinFullPath(winClass As String, winTitle As String, winHandle As Long) As String
    Dim hwnd As Long
    Dim lPid As Long    '进程Pid,在任务管理器进程标签里看到的数字就是PID
    Dim sFullPath As String
    Dim lLen As Long    '缓存
    Dim hProcess As Long
    '定义一个存储进程完整路径的变量,先填充空格。
    sFullPath = Space(1024)       '这句很重要很重要,否则会失败!
    '先设置一个缓冲大小
    lLen = 1024                    '这句也非常重要,与上面的值设一样大
    If CStr(winClass) = "0" Then
        winClass = vbNullString
    End If
    If CStr(winTitle) = "0" Then
        winTitle = vbNullString
    End If
    '如果参数3已经提供了句柄,则直接使用,没提供则用API函数FindWindows来获取
    If CStr(winHandle) <> "0" Then
        hwnd = winHandle
    Else
        hwnd = FindWindow(winClass, winTitle)
    End If
    Print hwnd
    If hwnd = 0 Then
        Debug.Print "窗口句柄为0,没找到窗口,函数返回空字符串"
        GetWinFullPath = ""
        Exit Function
    End If
    '根据窗口句柄,获取进程ID
    GetWindowThreadProcessId hwnd, lPid
    Debug.Print lPid
    '再根据进程ID,获取进程句柄
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, lPid)
    '判断操作系统版本,调用不同函数,主版本号6以下使用第一个或第二个函数
    If GetWindowsMajorVersion() >= 6 Then
        '根据进程的句柄hProcess,获得进程文件的完整路径,存在sFullPath变量里
        'GetModuleFileName hProcess, sFullPath, lLen
        'Debug.Print "版本<6 使用 GetModuleFileName 函数"
        '不用GetModuleFileName,改用下面的函数,结果是一样的
         GetProcessImageFileName hProcess, sFullPath, lLen
         Debug.Print "版本<6 使用 GetProcessImageFileName 函数"
        '因为这两个函数返回的结果都是象\Device\HarddiskVolume1这样开头的,需要下面这句进行转化
        sFullPath = FormatPath(sFullPath)     '这个FormatPath函数在第四步中编写
    Else
        QueryFullProcessImageName hProcess, 0, sFullPath, lLen
        Debug.Print "版本>=6 使用 QueryFullProcessImageName 函数"
        '这个函数返回的结果,是盘符开头的,不需要转化
    End If
    '获取实际的进程完整路径,因上面函数返回给sFullPah变量的值,前面是我们所要的路径(以'\0'终止),后面有一大串空格(总长度1024),所以需要下面这行语句:
    sFullPath = Left(sFullPath, lLen)
    '关闭进程句柄(GetModuleFileName、GetProcessImageFileName或QueryFullProcessImageName这个三函数都需要一个参数:进程句柄hProcess。为了得到这个hProcess,需要先用OpenProcess函数打开进程Pid;为得到这个进程Pid,又需要先使用GetWindowThreadProcessId函数访问窗口句柄;为了获取窗口句柄,又需要先使用FindWindow函数去查找。FindWindow函数只需要提供窗口的类名或标题,这个就容易实现了。)
    CloseHandle hProcess
    GetWinFullPath = sFullPath
    End Function
    '第四步:编写格式化路径函数
    '这个函数功能是将 \Device\HarddiskVolume1 格式的全路径转化为C:\
    Private Function FormatPath(sAllNamePath As String) As String
        If CStr(sAllNamePath) = "" Then
            FormatPath = sAllNamePath
            Exit Function
        End If
        Dim aFull() As String, aShort() As String, sPath As String, i As Integer, j As Integer, Letter26 As String, BoolCompare As Boolean
        aFull = Split(sAllNamePath, "\")
        Letter26 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        For i = 1 To 26
          sPath = GetDosDevice(Mid(Letter26, i, 1) & ":")
          Debug.Print "sPath=" & sPath
          
          If sPath <> "" Then '盘符存在的前提下进行比较
            Debug.Print "sPath不为空"
            BoolCompare = True  '默认已匹配上
            aShort = Split(sPath, "\")
            For j = 0 To UBound(aShort)
                If aFull(j) <> aShort(j) Then
                    BoolCompare = False
                End If
            Next j
            If BoolCompare Then
             FormatPath = Mid(Letter26, i, 1) & ":" & Right(sAllNamePath, InStrRev(StrReverse(sAllNamePath), StrReverse(sPath), -1, vbTextCompare) - 1)
             Exit Function
            End If
          End If
        Next i
        FormatPath = ""
    End Function
    '第五步:编写GetDosDevice函数
    '这个函数的功能是将查找C: 这样的盘符对应的全路径名(格式为 \Device\HarddiskVolume1)
    Private Function GetDosDevice(Letter As String) As String
    If CStr(Letter) = "0" Then
        MsgBox ("GetDosDevice函数调用参数不正确!正确格式为 C:")
        GetDosDevice = ""
        Exit Function
    End If
    Dim lpTargetPath As String
    lpTargetPath = Space(255)
    QueryDosDevice Letter, lpTargetPath, 255
    '下面这行语句花了我两天时间!Chr(0)表示Null,因为返回值lpTargetPath不仅有空格,结尾还有两Null字符,都要处理掉!
    lpTargetPath = Replace(Trim(lpTargetPath), Chr(0), "")
    GetDosDevice = lpTargetPath
    End Function

    好了,大功靠告成了!建一个textbox 两个commandbutton,打开Windows自带的记事本,用下面的代码测试效果。

    Private Sub Command1_Click()
        Text1.Text = GetWinFullPath(Text1.Text, 0, 0)
    End Sub
    
    Private Sub Command2_Click()
        Text1.Text = FormatPath(Text1.Text)
    End Sub
    

    我是VB 6.0编写的,在WindowsXP以及Windows7 64位32位系统上测试都很成功。不妥之处,请大神指教。

    展开全文
  • 建立数据库,并以相对路径的方式访问数据库。只要数据库与工程文件在同一个目录下就可以直接访问
  • Windows 系统中的文件路径格式

    千次阅读 2019-05-17 23:10:00
    title: Windows 系统中的文件路径格式 ms.date: 06/28/2018 ms.technology: dotnet-standard dev_langs: csharp vb helpviewer_keywords: I/O, long paths long paths path formats, Windows author: ...

    System.IO命名空间中很多类型的成员都包括 path 参数,让你可以指定指向某个文件系统资源的绝对路径或相对路径。 此路径随后会传递至 Windows 文件系统 API。 本主题讨论可在 Windows 系统上使用的文件路径格式。

    传统 DOS 路径

    标准的 DOS 路径可由以下三部分组成:

    • 卷号或驱动器号,后跟卷分隔符 (:)。
    • 目录名称。 目录分隔符用来分隔嵌套目录层次结构中的子目录。
    • 可选的文件名。 目录分隔符用来分隔文件路径和文件名。

    如果以上三项都存在,则为绝对路径。 如未指定卷号或驱动器号,且目录名称的开头是目录分隔符,则路径属于当前驱动器根路径上的相对路径。 否则路径相对于当前目录。 下表显示了一些可能出现的目录和文件路径。

    路径说明
    C:\Documents\Newsletters\Summer2018.pdfC: 盘根路径上的绝对文件路径。
    \Program Files\Custom Utilities\StringFinder.exe当前驱动器根路径上的绝对路径。
    2018\January.xlsx指向当前目录的子目录中的文件的相对路径。
    ..\Publications\TravelBrochure.pdf指向当前目录的同级目录中的文件的相对路径。
    C:\Projects\apilibrary\apilibrary.sln指向 C: 盘根路径中的文件的绝对路径。
    C:Projects\apilibrary\apilibrary.slnC: 盘当前目录上的相对路径。

    请注意最后两个路径之间的差异。 两者都指定了可选的卷说明符(均为“C:”),但前者以所指定卷的根开头,而后者不是。 结果,前者表示 C: 盘根目录上的绝对路径,而后者表示 C: 盘当前目录上的相对路径。 应使用前者时使用了后者是涉及 Windows 文件路径的 bug 的常见原因。

    可以通过调用 System.IO.Path.IsPathFullyQualified方法来确定文件路径是否完全限定(即是说,该路径独立于当前目录,且在当前目录更改时不发生变化)。 请注意,如果解析的路径始终指向同样的位置,那么此类路径可以包括相对目录段(...),而同时依然是完全限定的。

    以下示例演示绝对路径和相对路径之间的差异。 假定存在目录 D:\FY2018\,且在运行该示例之前还没有通过命令提示符为 D:\ 设置任何当前目录。

    using System;
    using System.Diagnostics;
    using System.IO;
    using System.Reflection;
    
    public class Example
    {
       public static void Main(string[] args)
       {
          Console.WriteLine($"Current directory is '{Environment.CurrentDirectory}'");
          Console.WriteLine("Setting current directory to 'C:\\'");
          
          Directory.SetCurrentDirectory(@"C:\");
          string path = Path.GetFullPath(@"D:\FY2018");
          Console.WriteLine($"'D:\\FY2018' resolves to {path}");
          path = Path.GetFullPath(@"D:FY2018");
          Console.WriteLine($"'D:FY2018' resolves to {path}");
    
          Console.WriteLine("Setting current directory to 'D:\\Docs'");
          Directory.SetCurrentDirectory(@"D:\Docs");
    
          path = Path.GetFullPath(@"D:\FY2018");
          Console.WriteLine($"'D:\\FY2018' resolves to {path}");
          path = Path.GetFullPath(@"D:FY2018");
    
          // This will be "D:\Docs\FY2018" as it happens to match the drive of the current directory
          Console.WriteLine($"'D:FY2018' resolves to {path}");
    
          Console.WriteLine("Setting current directory to 'C:\\'");
          Directory.SetCurrentDirectory(@"C:\");
    
          path = Path.GetFullPath(@"D:\FY2018");
          Console.WriteLine($"'D:\\FY2018' resolves to {path}");
    
          // This will be either "D:\FY2018" or "D:\FY2018\FY2018" in the subprocess. In the sub process,
          // the command prompt set the current directory before launch of our application, which
          // sets a hidden environment variable that is considered.
          path = Path.GetFullPath(@"D:FY2018");
          Console.WriteLine($"'D:FY2018' resolves to {path}");
    
          if (args.Length < 1)
          {
             Console.WriteLine(@"Launching again, after setting current directory to D:\FY2018");
             Uri currentExe = new Uri(Assembly.GetExecutingAssembly().GetName().CodeBase, UriKind.Absolute);
             string commandLine = $"/C cd D:\\FY2018 & \"{currentExe.LocalPath}\" stop";
             ProcessStartInfo psi = new ProcessStartInfo("cmd", commandLine); ;
             Process.Start(psi).WaitForExit();
    
             Console.WriteLine("Sub process returned:");
             path = Path.GetFullPath(@"D:\FY2018");
             Console.WriteLine($"'D:\\FY2018' resolves to {path}");
             path = Path.GetFullPath(@"D:FY2018");
             Console.WriteLine($"'D:FY2018' resolves to {path}");
          }
          Console.WriteLine("Press any key to continue... ");
          Console.ReadKey();
       }
    }
    // The example displays the following output:
    //      Current directory is 'C:\Programs\file-paths'
    //      Setting current directory to 'C:\'
    //      'D:\FY2018' resolves to D:\FY2018
    //      'D:FY2018' resolves to d:\FY2018
    //      Setting current directory to 'D:\Docs'
    //      'D:\FY2018' resolves to D:\FY2018
    //      'D:FY2018' resolves to D:\Docs\FY2018
    //      Setting current directory to 'C:\'
    //      'D:\FY2018' resolves to D:\FY2018
    //      'D:FY2018' resolves to d:\FY2018
    //      Launching again, after setting current directory to D:\FY2018
    //      Sub process returned:
    //      'D:\FY2018' resolves to D:\FY2018
    //      'D:FY2018' resolves to d:\FY2018
    // The subprocess displays the following output:
    //      Current directory is 'C:\'
    //      Setting current directory to 'C:\'
    //      'D:\FY2018' resolves to D:\FY2018
    //      'D:FY2018' resolves to D:\FY2018\FY2018
    //      Setting current directory to 'D:\Docs'
    //      'D:\FY2018' resolves to D:\FY2018
    //      'D:FY2018' resolves to D:\Docs\FY2018
    //      Setting current directory to 'C:\'
    //      'D:\FY2018' resolves to D:\FY2018
    //      'D:FY2018' resolves to D:\FY2018\FY2018
    

    UNC 路径

    通用命名约定 (UNC) 路径,用于访问网络资源,具有以下格式:

    • 一个以 \\ 开头的服务器名或主机名。 服务器名称可以为 NetBIOS 计算机名称或者 IP/FQDN 地址(支持 IPv4 和 IPv6)。
    • 共享名,使用 \ 将其与主机名分隔开。 服务器名和共享名共同组成了卷。
    • 目录名称。目录分隔符(System.IO.Path.DirectorySeparatorChar)用来分隔嵌套目录层次结构中的子目录。
    • 可选的文件名。 目录分隔符用来分隔文件路径和文件名。

    以下是一些 UNC 路径的示例:

    路径说明
    \\system07\C$\system07 上 C: 盘的根目录。
    \\Server2\Share\Test\Foo.txt\\Server2\Share 卷的测试目录中的 Foo.txt 文件。

    UNC 路径必须始终是完全限定的。 它们可以包括相对目录段(...),但是这些目录段必须是完全限定的路径的一部分。 只能通过将 UNC 路径映射至驱动器号来使用相对路径。

    DOS 设备路径

    Windows 操作系统有一个指向所有资源(包括文件)的统一对象模型。 可从控制台窗口访问这些对象路径;并通过旧版 DOSUNC 路径映射到的符号链接的特殊文件,将这些对象路径公开至 Win32 层。 此特殊文件夹可通过 DOS 设备路径语法(以下任一)进行访问:

    \\.\C:\Test\Foo.txt
    \\?\C:\Test\Foo.txt

    从 NET Core 1.1 和 .NET Framework 4.6.2 开始,运行在 Windows 上的 .NET 实现支持 DOS 设备路径语法。

    DOS 设备路径由以下部分组成:

    • 设备路径说明符(\\.\\\?\),它将路径标识为 DOS 设备路径。

      .NET Core 的所有版本以及从 4.6.2 开始的 .NET Framework 版本都支持 \\?\

    • 指向“真正”设备对象(这里是 C:)的符号链接。

      设备路径说明符后的第一个 DOS 设备路径段标识了卷或驱动器。 (例如,\\?\C:\\\.\BootPartition\。)

      UNC 有个特定的链接,很自然地名为 UNC。 例如:

      \\.\UNC\Server\Share\Test\Foo.txt
      \\?\UNC\Server\Share\Test\Foo.txt

      对于设备 UNC,服务器/共享部分构成了卷。 例如,在 \\?\server1\e:\utilities\\filecomparer\ 中,服务器/共享部分是 server1\utilities。 使用相对目录段调用Path.GetFullPath(System.String,System.String)等方法时,这一点非常重要;决不可能越过卷。

    DOS 设备路径通过定义进行完全限定。 不允许使用相对目录段(...)。 也不会包含当前目录。

    示例:引用同一个文件的方法

    以下示例演示了一些方法,以此可在使用System.IO命名空间中的 API 时引用文件。 该示例实例化 System.IO.FileInfo 对象,并使用它的 System.IO.FileInfo.NameFileInfo.Length属性来显示文件名以及文件长度。

    using System;
    using System.IO;
    
    class Program
    {
        static void Main()
        {
            string[] filenames = {
                @"c:\temp\test-file.txt",
                @"\\127.0.0.1\c$\temp\test-file.txt",
                @"\\LOCALHOST\c$\temp\test-file.txt",
                @"\\.\c:\temp\test-file.txt",
                @"\\?\c:\temp\test-file.txt",
                @"\\.\UNC\LOCALHOST\c$\temp\test-file.txt",
                @"\\127.0.0.1\c$\temp\test-file.txt" };
    
            foreach (var filename in filenames)
            {
                FileInfo fi = new FileInfo(filename);
                Console.WriteLine($"file {fi.Name}: {fi.Length:N0} bytes");
            }
        }
    }
    // The example displays output like the following:
    //      file test-file.txt: 22 bytes
    //      file test-file.txt: 22 bytes
    //      file test-file.txt: 22 bytes
    //      file test-file.txt: 22 bytes
    //      file test-file.txt: 22 bytes
    //      file test-file.txt: 22 bytes
    //      file test-file.txt: 22 bytes
    

    路径规范化

    几乎所有传递至 Windows API 的路径都经过规范化。 规范化过程中,Windows 执行了以下步骤:

    • 识别路径。
    • 将当前目录应用于部分限定(相对)路径。
    • 规范化组件和目录分隔符。
    • 评估相对目录组件(当前目录是 .,父目录是 ..)。
    • 剪裁特定字符。

    这种规范化隐式进行,若想显式进行规范化,可以调用 Path.GetFullPath方法,这会包装对 GetFullPathName() 函数的调用。 还可以使用 P/Invoke 直接调用 Windows GetFullPathName() 函数

    识别路径

    路径规范化的第一步就是识别路径类型。 路径归为以下几个类别之一:

    • 它们是设备路径;就是说,它们的开头是两个分隔符和一个问号或句点(\\?\\.)。
    • 它们是 UNC 路径;就是说,它们的开头是两个分隔符,没有问号或句点。
    • 它们是完全限定的 DOS 路径;就是说,它们的开头是驱动器号、卷分隔符和组件分隔符 (C:\)。
    • 它们指定旧设备(CONLPT1)。
    • 它们相对于当前驱动器的根路径;就是说,它们的开头是单个组件分隔符 (\)。
    • 它们相对于指定驱动器的当前目录;就是说,它们的开头是驱动器号和卷分隔符,而没有组件分隔符 (C:)。
    • 它们相对于当前目录;就是说,它们的开头是上述情况以外的任何内容 (temp\testfile.txt)。

    路径的类型决定是否以某种方式应用当前目录。 还决定该路径的“根”是什么。

    处理旧设备

    如果路径是旧版 DOS 设备(例如 CON``COM1LPT1),则会转换为设备路径(方法是在其前面追加 \\.\)并返回。

    开头为旧设备名的路径始终被 Path.GetFullPath(System.String)方法解释为旧设备。 例如,CON.TXT 的 DOS 设备路径为 \\.\CON,而 COM1.TXT\file1.txt 的 DOS 设备路径为 \\.\COM1

    应用当前目录

    如果路径非完全限定,Windows 会向其应用当前目录。 不会向 UNC 和设备路径应用当前目录。 带有分隔符 C:\\ 的完整驱动器也不会。

    如果路径的开头是单个组件分隔符,则会应用当前目录中的驱动器。 例如,如果文件路径是 \utilities 且当前目录为 C:\temp\,规范化后路径则为 C:\utilities

    如果路径开头是驱动器号和卷分隔符,而没有组件分隔符,则应用从命令行界面为指定驱动器设置的最新当前目录。 如未设置最新当前目录,则只应用驱动器。 例如,如果文件路径为 D:sources,当前目录为 C:\Documents\,且 D: 盘上的最新当前目录为 D:\sources\,则结果为 D:\sources\sources。 这些“驱动器相对”路径是导致程序和脚本逻辑错误的常见原因。 假设以字母和冒号开头的路径不是相对路径,显然是不正确的。

    如果路径不是以分隔符开头的,则应用当前驱动器和当前目录。 例如,如果路径是 filecompare 且当前目录是 C:\utilities\,则结果为 C:\utilities\filecompare\

    相对路径在多线程应用程序(也就是大多数应用程序)中很危险,因为当前目录是分进程的设置。 任何线程都能在任何时候更改当前目录。 从 .NET Core 2.1 开始,可以调用 Path.GetFullPath(System.String,System.String)方法,从想要据此解析绝对路径的相对路径和基础路径(当前目录)获取绝对路径。

    规范化分隔符

    将所有正斜杠 (/) 转换为标准的 Windows 分隔符,也就是反斜杠 (\)。 如果存在斜杠,前两个斜杠后面的一系列斜杠都将折叠为一个斜杠。

    评估相对组件

    处理路径时,会评估所有由一个或两个句点(...)组成的组件或分段:

    • 如果是单句点,则删除当前分段,因为它表示当前目录。

    • 如果是双句点,则删除当前分段和父级分段,因为双句点表示父级目录。

      仅当父级目录未越过路径的根时,才删除父级目录。 路径的根取决于路径的类型。 对于 DOS 路径,根是驱动器 (C:\);对于UNC,根是服务器/共享 (\\Server\Share);对于设备路径,则为设备路径前缀(\\?\\\.\)。

    剪裁字符

    随着分隔符的运行和相对段先遭删除,一些其他字符在规范化过程中也删除了:

    • 如果某段以单个句点结尾,则删除此句点。 (单个或两个句点的段在之前的步骤中已规范化。 三个或更多句点的段未规范化,并且实际上是有效的文件/目录名。)

    • 如果路径的结尾不是分隔符,则删除所有尾随句点和空格 (U+0020)。 如果最后的段只是单个或两个句点,则按上述相对组件规则处理。

      此规则意味着可以创建以空格结尾的目录名称,方法是在空格后添加结尾分隔符。

      请勿创建以空格结尾的目录名或文件名。 如果以空格结尾,则可能难以或者无法访问目录,并且应用程序在尝试处理这样的目录或文件时通常会操作失败。

    跳过规范化

    一般来说,任何传递到 Windows API 的路径都会(有效地)传递到 GetFullPathName 函数并进行规范化。 但是有一种很重要的例外情况:以问号(而不是句点)开头的设备路径。 除非路径确切地以 \\?\ 开头(注意使用的是规范的反斜杠),否则会对它进行规范化。

    为什么要跳过规范化过程? 主要有三方面的原因:

    1. 为了访问那些通常无法访问但合法的路径。 例如名为 hidden. 的文件或目录,这是能访问它的唯一方式。

    2. 为了在已规范化的情况下通过跳过规范化过程来提升性能。

    3. 为了跳过路径长度的 MAX_PATH 检查以允许多于 259 个字符的路径(仅在 .NET Framework 上)。 大多数 API 都允许这一点,也有一些例外情况。

    .NET Core 显式处理长路径,且不执行 MAX_PATH 检查。 MAX_PATH 检查只适用于 .NET Framework。

    跳过规范化和路径上限检查是两种设备路径语法之间唯一的区别;除此以外它们是完全相同的。 请谨慎地选择跳过规范化,因为很容易就会创建出“一般”应用程序难以处理的路径。

    如果将开头为 \\?\ 的路径显式地传递至 GetFullPathName 函数,则依然会对它们进行规范化。

    请注意,可将超过 MAX_PATH 字符数的路径传递至 GetFullPathName,前提是该路径不含 \\?\。 支持任意长度的路径,只要其字符串大小在 Windows 能处理的范围内。

    大小写和 Windows 文件系统

    Windows 文件系统有一个让非 Window 用户和开发人员感到困惑的特性,就是路径和目录名称不区分大小写。 也就是说,目录名和文件名反映的是创建它们时所使用的字符串的大小写。 例如,名为

    Directory.Create("TeStDiReCtOrY");
    

    的方法创建名为 TeStDiReCtOrY 的目录。 如果重命名目录或文件以改变大小写,则目录名或文件名反映的是重命名它们时所使用的字符串的大小写。 例如,以下代码将文件 test.txt 重命名为 Test.txt

    using System.IO;
    
    class Example
    {
       static void Main()
       {
          var fi = new FileInfo(@".\test.txt");
          fi.MoveTo(@".\Test.txt");
       }
    }
    

    但是比较目录名和文件名时不区分大小写。 如果搜索名为“test.txt”的文件,.NET 文件系统 API 会在比较时忽略大小写问题。Test.txt、TEST.TXT、test.TXT 和其他任何大写和小写的字母组合都会成为“test.txt”的匹配项。

    展开全文
  • vb.net2005+winxp中,我使用GetPrivateProfileString读取一个ini文件,如果文件路径中含有中文,就会遇到一个奇怪的问题:第一次读取正常,第二次读取就取不到值。代码如下: Private Declare Function ...
  • VB 读取文件 VB6.0 实用FSO

    千次阅读 2015-04-24 19:19:51
     从 Visual Basic 的第一版至今,VB中有关文件的处理都是通过使用 Open 、Write以及其它一些相关的语句和 函数 来实现的。随着 软件 技术的不断发展,加上面向对象 编程 概念的日臻成熟,这些文件操作语句已经不能...
  • js文件中获取项目路径

    千次阅读 2018-03-22 11:02:54
    有的时候需要在js文件中获取项目的路径,这时候就需要使用jquery获取路径的方法:jquery方法中调用[javascript] view plain copygetRootPath()+"static/html/projecthelp.html" //获取项目访问路径...
  • 当您应该授予文件所在的文件夹的权限时,似乎是在授予文件本身的权限。如前所述,您应该创建一个用户帐户来运行站点托管的应用程序池in。应该授予此ID权限...
  • vb目录文件操作的三种方法

    千次阅读 2008-01-12 20:38:00
    可见,对目录和文件的操作是多么的重要.下面我们就和大家一起学习一下vb中可以应用的三种方法:1、使用现成的控件2、使用visualbasic中提供的方法3、使用windows提供的应用程序编程接口(api)。下面我们具体看看这些...
  • 随机文件  随机文件中每一个记录定长,并设置记录号,记录号从1开始。  存取记录时,只要说明所需记录的编号,系统就以此算出记录所在位置,然后加以写入或读出 初步认识  建立一个随机文件文件中包含...
  • 文件路径的获取是编程人员入门时常常会遇见的问题,恰当地理解并灵活配置好文件路径能准确高效定位需获取和访问的文件,而路径的设置在不同的环境和开发语言里既有共同点,又有其特殊的要求和规定。从Office Word中...
  • IIS、Asp.net 编译时的临时文件路径

    千次阅读 2017-08-26 00:15:22
    IIS上部署的ASP.NET站点都会在一个.Net Framework的特定目录下生成临时编译文件增加ASP.NET站点的访问性能,有时候需要手动去删除这些临时编译文件,特别是发布新版本代码到IIS后,如果发现新发布的代码在IIS上没有...
  • vb 读取文件属性

    千次阅读 2011-02-28 16:11:00
    返回文件修改时间:FileDateTime(文件路径) 返回文件字节大小:FileLen(文件路径) 示例: Private Sub Form_Load() Dim sOut As String Const sFile As String = "C:/WINDOWS/notepad.exe" sOut = "文件...
  • 名词解释:  ... 访问模式:计算机访问文件的方式,VB中有顺序、随机、二进制三种访问模式。  2. 顺序访问模式  顺序访问模式的规则最简单,指读出或写入时,从第一条记录“顺序”地读到最后一条记录...
  • VB讲课笔记12:文件管理

    千次阅读 2018-03-14 17:57:56
    3、文件访问方法 (1)命令方式 (2)FSO对象模型 4、文件访问步骤 (1)打开文件 (2)读写文件 (3)关闭文件 二、顺序文件 1、打开文件 2、关闭文件 3、向顺序文件写数据 (1)Write#语句 (2)...
  • ' Debug.Print "文件" & .Name & "的最后访问日期:" & .DateLastAccessed ' Debug.Print "文件" & .Name & "的最后修改日期:" & .DateLastModified ' Debug.Print "文件" & .Name & "所在驱动器:" & .Drive '...
  • vb.net 使用 DIR 遍历文件目录

    千次阅读 2016-05-10 15:47:54
    在 Macintosh 计算机上,默认驱动器名称是 “HD” ,并且路径部分由冒号取代反斜线隔开。而且 Microsoft Windows 的通配符在 Mac 中可以作为有效字符出现在文件名中。也可以使用 MacID 函数来指定文件组。 Dim ...
  • VB打开Excel文件

    万次阅读 2014-03-05 17:12:41
    (1)vb打开Excel    用EXCEL对象读取EXCEL... 做为一种简捷、系统的 Windows应用程序开发工具,VB具有强大的数据处理功能,提供了多种数据访问方法,可以方便地存取Microsoft SQL Server、Oracle、XBase等多种
  • 获得URL临时文件缓存路径VB很实用的源码,精心挑选的精品源码
  • VB文件的读写操作

    2010-12-17 20:39:35
     访问模式:计算机访问文件的方式,VB中有顺序、随机、二进制三种访问模式。 2. 顺序访问模式  顺序访问模式的规则最简单,指读出或写入时,从第一条记录“顺序”地读到最后一条记录,不可以...
  • 分离文件路径等(2KB) 92,dirfile.zip 一个扫描文件的模块,速度很快(2KB) 93,wjsx.zip 单击文件名,它的几乎所有属性就一览无余了(7KB) 94,cbzt.zip 在WINDOWS下实现拷贝、粘贴的源代码(5KB)...
  • 利用VB控件操作目录和文件夹

    千次阅读 2013-06-05 11:22:51
    首先想到的就是VB中给我们提供的现成的控件。主要有这么两类:  一类是驱动器列表框(DriveListBox)、目录列表框(DirListBox)和文件列表框(FileListBox)三个控件组合而成的自定义对话框;
  • 我在应用层用Hook,自己试了EnumJobs函数,反映的只是文件的类型及名称,拿不到路径。。。 GetModuleFileName函数也是拿不到路径
  • VB读写dbf格式数据库

    千次阅读 2019-07-10 17:43:49
    不知是驱动版本问题还是什么原因,上述代码在新电脑上运行时会出现找不到路径的错误,此时,把SQL语句中的表名指定绝对路径即可,如: '创建 Private Sub Command1_Click() CNN.CursorLocation = adUseClient ...
  • vb:读写文本文件

    2012-03-04 21:23:21
    VB读写文件要用到以下语句: 1、Open语句打开文件。 2、读文件使用Line Input、Input #,(以上为文本方式)和Get(以上为二进制方式)。 3、写文件使用Print #、Write(以上为文本方式)和Put(以上为二进制方式)...
  • js文件中调用action路径问题

    千次阅读 2016-08-18 11:16:24
    js文件和jsp路径不一致,当js调用action方法时候,不能直接写方法名称;比如:jsp文件在project webRoot jsp目录下,js文件在webRoot-js-tree目录下,则js文件中调用方法时候,需要../返回到jsp文件目录,上例中调用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,290
精华内容 6,916
关键字:

vb访问文件路径