我正在构建一个在Windows主机上运行的UI应用程序(.exe),应该可以
要写入的文件必须在内部存储器上完全是512字节,这对我的应用程序需求至关重要。以下是我的接触方式:
要写一个文件,我首先在磁盘(我的电脑)上创建一个文件,用512字节(我预配置的内容)填充它,然后使用adb将此文件推送到设备上
int DoWrite(Buffer* pBuf)
{
// pBuf contains preconfigured 512 byte pattern to be written to a file on device
//prepare a local file
char*cmdBuf = new char[512];
for (int i(0); i < 512; ++i)
cmdBuf[i] = pBuf->operator[](i);
ofstream myFormattedFile;
if(myFormattedFile.is_open())
{
//temp file creation successful
pBuf->WriteFormattedDataToStream(myFormattedFile);
myFormattedFile.close();
}
FILE* fp = 0;
fp = fopen("rawData.bin", "wb");
int temp = fwrite(cmdBuf, sizeof(char), 512, fp);
fclose(fp);
//push this file to device at /mnt/emmc/diagnose (or whatever the myFilePath is set to)
//ADB_PATH is set to adb executable
//m_filePath is set to /mnt/emmc
std::string cmd = ADB_PATH + "adb push " + "C:\\Users\\MyUser\\DiagTool\\rawData.bin " + m_filePath;
//Execute push command
int rc = system(cmd.c_str());
delete [] cmdBuf;
return 0;
}
我能够看到创建了文件/ mnt / emmc / diagnose。 获取adb shell,并在/ mnt / emmc上执行ls -l确实将filesize显示为512!
所以,这是我的问题:
是否这样我在磁盘上创建的文件实际上不是512字节,而是4KB?
所以,如果我使用adb push,那么在设备上创建的文件大小是多少? 512字节或自通过OS后,它将应用适当的填充,实际文件大小不会是512字节?
这是写入内存的正确方法吗?或者有更好的方法吗?
我不想在设备上安装任何.apk,并使用我的应用程序与它进行交互。但如果没有任何作用,我也可以采用这种方法!
感谢任何帮助或指针...
答案 0 :(得分:0)
我认为你做的是正确的事。
1)文件大小不应该改变,因为它是相同的文件。也许文件系统中的大小无论如何都不一样。您可以尝试编写并阅读它,看看它是否确实发生了变化。
2)如果您没有在设备上运行任何应用,adb就是您的选择。
3)如果它以这种方式工作,请保持原样。