Articles of 文件

为什么使用带有标记为只读的文件的GetFileSizeEx()会出现“无效句柄”错误?

当我从只读文件的Delphi 6应用程序使用Windows API调用GetFileSizeEx()时,出现O / S错误代码6(“无效的文件句柄”)。 如果我从文件中删除只读属性,错误消失。 为什么我得到这个错误,有没有办法使用这个调用或类似的只读文件? 以下是相关的代码: function GetFileSizeEx(hFile: THandle; var FileSize: Int64): BOOL; stdcall; external 'kernel32.dll' name 'GetFileSizeEx'; function easyGetFileSize(theFileHandle: THandle): Int64; begin if not GetFileSizeEx(theFileHandle, Result) then RaiseLastOSError; end; – 罗斯勒

手柄 – 文件句柄和目录句柄结构

语言:C 操作系统:Windows 我的应用程序是用nt级别apis构build的,并且必须处理文件和目录句柄。 在Zwopenfile或zwcreate文件中,我得到一个HANDLE结果。 通常HANDLE的值就像0x00000024,28,2c等等。当我把它当作LPBYTE来查看内容的时候。 Visual Studio显示“无法评估表情”。 我明白从创build/打开文件HANDLE返回的HANDLE不是指向内存位置的指针。 但是,Windows使用该值并执行文件操作。 Ntquerydirectory对象提供有关句柄的信息。 但是,Windows如何实现这个function是未知的。 任何人都可以扔光。

read(2)如何与回车进行交互?

我正在编写一个简单的程序来翻转文件中的所有位,但是现在它只执行前1000个字节,直到我得到这么多的工作。 为什么我的read()函数忽略\ r个字符? 当我在只包含\ r \ n \ r \ n的文件上运行此代码时,读取调用返回2,缓冲区包含\ n \ n。 \ r字符完全被忽略。 我在Windows上运行(这甚至不会成为Linux机器上的问题) 为什么read(2)发现它时跳过\ r字符? 或者那是怎么回事? 编辑:结论是,Windows默认打开“文本”模式,而不是“二进制”模式的文件。 出于这个原因,当调用open时,我们必须指定O_BINARY作为模式。 谢谢,下面的代码。 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/stat.h> #include <fcntl.h> void invertBytes(size_t amount, char* buffer); int main(int argv, char** argc) { int fileCount = 1; char* fileName; int fd = […]

ioexception:在用java编写文件时,客户不需要特权

我search了很多类似的问题,但是解决不了我的问题。 我正在试图写一个文件,这给了我错误。 我的代码 try { File f = new File(file_name); f.createNewFile(); //System.out.println("Hello"); f.setWritable(true); FileWriter fstream = new FileWriter(f); BufferedWriter out = new BufferedWriter(fstream); ListIterator<String> itr = account.listIterator();//account is a List object while (itr.hasNext()) { String element = itr.next(); out.write(element); out.newLine(); } out.close(); } catch (IOException e) { e.printStackTrace(); } 错误是 java.io.IOException: A required privilege is […]

如果数据库最终依赖于操作系统,数据库如何保证持久性?

据我所知,数据库中的默认行为(当然在MySQL中)是自动提交的。 但结构通常如下: String sqlInsertOrUpdateStatement = "…."; sqlStatement.execute(sqlInsertOrUpdateStatement); //rest of code 现在execute是一个阻塞函数,当它返回时,我们知道数据是否被保存(根据执行的结果)。 但我不明白的是: 所有数据库实现都使用最低级别的文件。 例如, INSERT基本上是对文件的写入操作。 但是,当我们写入一个文件,我相信内容实际上不会立即刷新。 当操作系统决定时,它们被刷新。 即使应用程序代码(例如C库)发出刷新命令,操作系统也会尽快刷新数据。 那么数据库如何保证持久性。 文件I / O和操作系统中是否有一些基本的东西可以忽略/误解?

文件扩展名规则?

是否有任何文件扩展的规则? 例如,我写了一些代码,读取和写入只能被该特定程序所理解的字节模式。 我假设我的反病毒程序将不会太高兴,如果我给它起名为“pleasetrustme.exe”…是否允许使用这些扩展名? 那些不太知名的,比如“.arw”呢?

JavaScript – 提取文件夹名称

我相当新的JavaScript。 鉴于本地计算机的文件夹path(Windows),我想知道如何提取当前path中所有可能的文件夹的名称,而不知道有多less文件夹或被称为什么。 非常感谢你提前。

用批量variables重命名文件

我有以下代码: set DATE=%date% echo %DATE% set DAY=%DATE:~0,2% echo %DAY% rename file09.txt file%DAY%09.txt pause 它应该重命名一个文本文件,并把该月的一天的文件名。 但是,我正在rename命令得到一个语法错误。 我认为问题在于将variables插入到文件名中。 任何帮助,将不胜感激。 echo只是在我自己的参考程序。

批量根据名称将文件移动到新的子文件夹

我正在使用Windows 7,我有一个文件夹“C:\ capture”中存储了50万的图像。 这些图像形成330个图像序列,并且它们被命名如下: 1.0000000000.png … 1.0000003299.png … … 330.0000000000.png … 330.0000000010.png 我想把这些文件移动到名字的第一部分后面的330个子文件夹中。 C:\capture\1\1.0000000000.png … C:\capture\1\1.0000003299.png … … C:\capture\330\330.0000000000.png … C:\capture\330\330.0000000010.png 所以我基本上只对第一个之前的一切感兴趣。 在名字。 如何编写一个创build子文件夹的batch file,并将相应的文件移入其中?

Windowsbatch file – 将环境variables插入可执行调用

道歉,如果我忽略了另一个线程中的这个问题,但我无法find它(在这里或真正在互联网上的任何地方)。 在Windows(XP)中,通过右键单击“ 我的电脑” ,然后select“ 属性”>“高级”>“环境variables” ,设置以下全局环境variables : CUSTOM_HOME = c:\some\folder\path 我如何插入到batch file中的执行? 我需要“附加” subfolder\program.exe到这个path,以便我在batch file中获得c:\some\folder\path\subfolder\program.exe 。 我尝试类似 %CUSTOM_HOME%\subfolder\program.exe 但是当我执行batch file时,输出只是显示 > \subfolder\program.exe > The system cannot find the path specified. 什么是正确的语法,所以.exe的完整path将是正确的?