将文件夹属性更改为在 iOS 上隐藏(FMX、C++)
Change folder attribute to hidden on iOS (FMX, C++)
我想在运行时创建一个目录并将其隐藏。使用 this example 我尝试了以下代码,它在 Win32 上运行良好,但在 iOS 构建时出错:
UnicodeString TestPath;
TestPath = System::Ioutils::TPath::GetDocumentsPath() + "\test\";
TDirectory::CreateDirectory(TestPath);
TFileAttributes dirattribs;
dirattribs = TDirectory::GetAttributes(TestPath);
dirattribs = dirattribs << TFileAttribute::faHidden;
TDirectory::SetAttributes(TestPath, dirattribs);
我在为 iOS 或 Android 构建时遇到的构建错误是 no member named 'faHidden' in 'System::Ioutils::TFileAttribute'
。那么,如何更改 iOS 和 Android 上的文件夹属性?
p.s。使用 Rad Studio 10.3.2(C++ 生成器)。
faHidden
未在 Posix 系统上实现。这是 Embarcadero 的 DocWiki 中的 documented behavior。 faHidden
仅适用于 Windows。
要在 Posix 系统上创建对用户隐藏的文件夹,您只需在文件夹名称前加上一个前导点:
UnicodeString TestPath = System::Ioutils::TPath::GetDocumentsPath();
#ifdef _Windows
TestPath = System::Ioutils::TPath::Combine(TestPath, _D("test"));
TDirectory::CreateDirectory(TestPath);
TFileAttributes dirattribs = TDirectory::GetAttributes(TestPath);
dirattribs = dirattribs << TFileAttribute::faHidden;
TDirectory::SetAttributes(TestPath, dirattribs);
#else
TestPath = System::Ioutils::TPath::Combine(TestPath, _D(".test"));
TDirectory::CreateDirectory(TestPath);
#endif
请注意,也可以在 Windows 上创建一个带前导点的文件夹。它只是不会影响文件夹的隐藏属性,您仍然需要明确设置:
UnicodeString TestPath = System::Ioutils::TPath::GetDocumentsPath();
TestPath = System::Ioutils::TPath::Combine(TestPath, _D(".test"));
TDirectory::CreateDirectory(TestPath);
#ifdef _Windows
TFileAttributes dirattribs = TDirectory::GetAttributes(TestPath);
dirattribs = dirattribs << TFileAttribute::faHidden;
TDirectory::SetAttributes(TestPath, dirattribs);
#endif
我想在运行时创建一个目录并将其隐藏。使用 this example 我尝试了以下代码,它在 Win32 上运行良好,但在 iOS 构建时出错:
UnicodeString TestPath;
TestPath = System::Ioutils::TPath::GetDocumentsPath() + "\test\";
TDirectory::CreateDirectory(TestPath);
TFileAttributes dirattribs;
dirattribs = TDirectory::GetAttributes(TestPath);
dirattribs = dirattribs << TFileAttribute::faHidden;
TDirectory::SetAttributes(TestPath, dirattribs);
我在为 iOS 或 Android 构建时遇到的构建错误是 no member named 'faHidden' in 'System::Ioutils::TFileAttribute'
。那么,如何更改 iOS 和 Android 上的文件夹属性?
p.s。使用 Rad Studio 10.3.2(C++ 生成器)。
faHidden
未在 Posix 系统上实现。这是 Embarcadero 的 DocWiki 中的 documented behavior。 faHidden
仅适用于 Windows。
要在 Posix 系统上创建对用户隐藏的文件夹,您只需在文件夹名称前加上一个前导点:
UnicodeString TestPath = System::Ioutils::TPath::GetDocumentsPath();
#ifdef _Windows
TestPath = System::Ioutils::TPath::Combine(TestPath, _D("test"));
TDirectory::CreateDirectory(TestPath);
TFileAttributes dirattribs = TDirectory::GetAttributes(TestPath);
dirattribs = dirattribs << TFileAttribute::faHidden;
TDirectory::SetAttributes(TestPath, dirattribs);
#else
TestPath = System::Ioutils::TPath::Combine(TestPath, _D(".test"));
TDirectory::CreateDirectory(TestPath);
#endif
请注意,也可以在 Windows 上创建一个带前导点的文件夹。它只是不会影响文件夹的隐藏属性,您仍然需要明确设置:
UnicodeString TestPath = System::Ioutils::TPath::GetDocumentsPath();
TestPath = System::Ioutils::TPath::Combine(TestPath, _D(".test"));
TDirectory::CreateDirectory(TestPath);
#ifdef _Windows
TFileAttributes dirattribs = TDirectory::GetAttributes(TestPath);
dirattribs = dirattribs << TFileAttribute::faHidden;
TDirectory::SetAttributes(TestPath, dirattribs);
#endif