Aber als ich meine angeschlossen habe Telefon über USB und aktivierten Dateiübertragungsmodus, dann schlug das Kopieren an einen anderen Ort auf dem gemounteten Telefonlaufwerk mit der Funktion std::filesystem::copy fehl, die offensichtlich den Hauptteil des Kopierens im Code darstellt. Die Datei wird tatsächlich erstellt, aber der Inhalt wird nicht ausgefüllt, so dass sie leer bleibt und null Bytes für ihre Größe anzeigt.
Wenn ich eine Datei verschieben möchte, verwende ich die Funktion std::filesystem: :rename, dann geht die Datei einfach verloren – es wird nie etwas erstellt.
Code: Select all
void actual_copy_or_move(
const std::filesystem::path& current_path,
const std::filesystem::path& target_path)
{
std::error_code err_code {};
if (m_do_move)
{
// Moving the file.
std::filesystem::rename(current_path, target_path, err_code);
}
else
{
// Straightforward copy, without any extra checks.
auto copy_lambda {[¤t_path, &target_path]() {
std::ifstream input_stream {current_path, std::ios::binary};
std::ofstream output_stream {target_path, std::ios::binary};
if (!input_stream.good() || !output_stream.good()) {
std::wcerr