static void ProcessFile(string this_file_to_process, int file_number) { int buffer_size = BufferSize; var file_information = new FileInfo(this_file_to_process); if (file_information.Length < buffer_size) { buffer_size = (int)file_information.Length; } byte[] buffer = new byte[buffer_size]; int number_of_bytes_read = 0; try { using (var input_stream = File.OpenRead(this_file_to_process)) { number_of_bytes_read = input_stream.Read(buffer, 0, buffer.Length); } } catch (Exception) { number_of_bytes_read = 0; } if (number_of_bytes_read > 0) { var exif_data = new Exif(); string filename_extension = System.IO.Path.GetExtension(this_file_to_process); if (exif_data.FromBytes(buffer) == true) { int final_field = exif_data.ShutterCount(); if (final_field == 0) { final_field = exif_data.SequenceNumber(); } if (final_field == 0) { final_field = file_number; } var taken = exif_data.Taken(); string new_filename = string.Format("{0}_{1}{2}", taken.ToString("yyyyMMdd_HHmmss", System.Globalization.CultureInfo.InvariantCulture), final_field, filename_extension); string just_filename = System.IO.Path.GetFileName(this_file_to_process); if (string.Compare(new_filename, just_filename) != 0) { string rename_to = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(this_file_to_process), new_filename); System.IO.File.Move(this_file_to_process, rename_to); } } } }
static void ProcessFile(string this_file_to_process, string output_directory) { int buffer_size = BufferSize; try { var file_information = new FileInfo(this_file_to_process); if (file_information.Length < buffer_size) { buffer_size = (int)file_information.Length; } } catch (Exception e) { Console.WriteLine(e.Message); return; } byte[] buffer = new byte[buffer_size]; int number_of_bytes_read = 0; try { using (var input_stream = File.OpenRead(this_file_to_process)) { number_of_bytes_read = input_stream.Read(buffer, 0, buffer.Length); } } catch (Exception) { number_of_bytes_read = 0; } if (number_of_bytes_read > 0) { var exif_data = new Exif(); string filename_extension = System.IO.Path.GetExtension(this_file_to_process); if (exif_data.FromBytes(buffer) == true) { int final_field = exif_data.ShutterCount(); if (final_field == 0) { final_field = exif_data.SequenceNumber(); } try { var taken = exif_data.Taken(); // Create year path string directoryName = output_directory + "\\" + taken.ToString("yyyy", System.Globalization.CultureInfo.InvariantCulture); Directory.CreateDirectory(directoryName); // Create month path directoryName = directoryName + "\\" + taken.ToString("yyyy-MM-MMMM", System.Globalization.CultureInfo.InvariantCulture); // Create day-where path directoryName = directoryName + "\\" + taken.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture); Directory.CreateDirectory(directoryName); long length = new System.IO.FileInfo(this_file_to_process).Length; string new_filename = string.Format("{0}-{1}{2}", taken.ToString("yyyy-MM-dd-hh-mm-ss", System.Globalization.CultureInfo.InvariantCulture), length, filename_extension); string rename_to = System.IO.Path.Combine(directoryName, new_filename); CreateSymbolicLink(rename_to, this_file_to_process, SymbolicLink.File); } catch (Exception e) { Console.WriteLine(e.Message); return; } } } }