#include <xtd/io/file_info>
#include <xtd/io/directory_info>
#include <xtd/io/path>
#include <xtd/console>
#include <xtd/environment>
#include <xtd/startup>
using namespace std;
class program {
private:
inline static ustring source_path = path::combine(environment::get_folder_path(environment::special_folder::my_documents),
"file_info_test_directory",
"move_from",
"from_file.xml");
inline static ustring dest_path = path::combine(environment::get_folder_path(environment::special_folder::my_documents),
"file_info_test_directory",
"dest_filexml");
public:
static auto main() {
console::clear();
console::set_window_position(0, 0);
console::set_window_size(console::largest_window_width() - 24, console::largest_window_height() - 16);
console::write_line("Welcome.");
console::write_line("This application demonstrates the file_info::move_to method.");
console::write_line("Press any key to start.");
console::read_key();
console::write(" Checking whether ");
console::write(source_path);
console::write_line(" exists.");
ensure_source_file_exists();
display_file_properties(f_info);
console::write_line("Preparing to move the file to ");
console::write(dest_path);
console::write_line(".");
move_file(f_info);
display_file_properties(f_info);
console::write_line("Preparing to delete directories.");
delete_files();
console::write_line("Press the ENTER key to close this application.");
console::read_key();
}
private:
try {
console::write_line("File moved to ");
console::write_line(dest_path);
display_exception(ex);
}
}
static void ensure_source_file_exists() {
if (!directory::exists(dir_path))
directory::create_directory(dir_path);
if (file::exists(dest_path))
file::remove(dest_path);
console::write("Creating file ");
console::write_line(".");
try {
console::write_line("Adding data to the file.");
write_file_content(10);
console::write_line("Successfully created the file.");
}
display_exception(ex);
}
}
static void write_file_content(int total_element) {
auto lines = vector<ustring> {};
lines.push_back("<?xml version=\"1.0\" standalone=\"yes\"?>");
for (auto index = 0; index < total_element; ++index)
lines.push_back(ustring::format("<MyElement Index=\"{0}\">\nMyElement at position {0}.", index));
file::write_all_lines(source_path, lines);
}
static void display_file_properties(
const file_info& f_info) {
console::write_line("The file_info instance shows these property values.");
try {
console::write("Full_name: ");
console::write("creation_time: ");
console::write("last_write_time: ");
console::write_line();
console::write_line("file contents:");
console::write_line();
while (!reader.end_of_stream())
console::write_line(reader.read_line());
console::write_line();
display_exception(ex);
}
}
static void delete_files() {
try {
auto d_info =
directory_info {path::combine(environment::get_folder_path(environment::special_folder::my_documents),
"file_infoTestDirectory")};
if (d_info.exists()) {
console::write_line("Successfully deleted directories and files.");
}
display_exception(ex);
}
}
auto s = ustring::empty_string;
s +=
"An exception of type \"";
s +=
"\" has occurred.\r\n";
s +=
"\r\nStack trace information:\r\n";
}
};