Я представляю программу, которую мне нужно будет написать, и мне понадобятся советы по языку.Мне нужно будет получить доступ к сырому диску, чтобы я мог отображать шестнадцатеричные данные, прокручивать или прыгать по диску и выполнять вычисления на основе данных.Я больше всего использую Java, и его переносимость между операционными системами для других моих проектов, безусловно, является преимуществом, но доступ к сырым дискам либо невозможен, либо потребует JNI, либо возможен в * nix, когда вы можете обращаться к дискам как к «файлам».».Я продолжаю читать разные вещи.Кстати, я могу справиться с этим типом работы с помощью файлов в Java, но в этом проекте мне нужно иметь возможность доступа к диску, чтобы не требовалось заранее создавать образы дисков для файлов.
Было бы неплохосделайте его настолько портативным, насколько это возможно, поскольку использование различных ОС дает реальную выгоду, но оно может не стоить того, и я должен просто придерживаться Windows и родного языка компиляции.Есть ли какой-нибудь существующий код JNI, который может помочь?У меня есть опыт работы с другими языками, но я давно не пользовался C ++.Должен ли я забыть о Java и попробовать C #?Кто-то сказал мне, что в Python есть библиотеки, доступные для такого типа вещей, несмотря на то, что это интерпретируемый язык, так что насчет Python?Что будет лучше для проекта?Что мне было бы полезно узнать?
Поиск свободного доступа к диску, Java, Python, похоже, не дает никаких полезных результатов.Спасибо за любую помощь!
РЕДАКТИРОВАТЬ Кажется, что это будет довольно сложно, узнать то, что мне нужно знать, а затем узнать это.Жаль, что вместо этого я не смог бы использовать образы дисков, потому что тогда я мог бы сразу же начать работать над ним на Java, что мне удобно, и я знаю, что смогу сделать хороший продукт.Я получил большую пропускную способность в других проектах обработки необработанных данных на Java, так что меня это не беспокоит.Плюс это было бы действительно портативно.Хм, возможно, придется рассмотреть это больше.Возможно, мне понадобится большая система хранения azz для хранения всех изображений:)
ОБНОВЛЕНИЕ Просто примечание для любого, кто найдет этот вопрос ... Я понял, что это работает простоуказав диск для файла с помощью нотации PhysicalDrive (в Windows), как ответ ниже hunsricker.Однако есть некоторые проблемы.Во-первых, если вы делаете проверку «существует» File.exists (), он говорит, что файл не существует.Кроме того, размер файла равен нулю, и когда я получаю «java.io.IOException: накопитель не может найти запрошенный сектор», я понимаю, что нахожусь в конце файла.И самое худшее - я получал некоторые странные ошибки времени выполнения, когда читал несколько байтов и пропускал (64) байта в цикле.Я немного изменил свою программу, чтобы прочитать разные суммы, и это изменилось, где произошла ошибка.Я использовал BufferedInputStream вместо RandomAccessFile, как Hunsricker ниже, кстати, не уверен, если это имеет значение.Мой единственный ответ на этот вопрос заключается в том, что, поскольку я работаю с физическим диском, мне не нравится, что я не читаю даже 512-байтовые сектора или блоки по 1 КБ или около того.Действительно, когда я читаю даже 1 КБ, 2 КБ, 512 байт и т. Д. И ничего не пропускаю, все работает нормально и работает до конца.Ошибки, которые я видел, были java.io.ioexception «неправильная функция» и java.io.ioexception «параметр неверен».Там не было ни рифмы, ни причины для них.Затем я создал файлы изображений с теми же данными и запустил на них свою программу, и она без проблем выполняла бы любую комбинацию чтения и пропуска байтов.Мне кажется, доступ к физическому диску был более требователен.