Re[35]: Как в одну строку кода прочитать содержимое файла в
От: rg45 СССР  
Дата: 08.01.24 17:33
Оценка:
Здравствуйте, ·, Вы писали:

·>Нет, не был. Что такая функция не подходит для больших файлов — это ясно сразу. Как и mmf не подходит для маленьких файлов и уж тем более для "нефайлов". Если ты не понимаешь какое апи надо использовать каких ситуациях, это говорит об отсутствии опыта.


Слушай, ну давай вот только не будем будем опытом меряться, то что твое мнение не совпадает с моим не ставит тебя выше меня аж ни разу. Если ты признаешь, что у ФУНКЦИИ ОБЩЕГО ПРИМЕНЕНИЯ ReadAllBytes существуе область применения, то почему отказываешь в этом праве ЧАСТНОЙ функции read_all_bytes.

·>А ты можешь описать возможную конкретную задачу, для которой твой код read_all_bytes подойдёт?


Зачитка тестовых данных, например. Вылетит по исключению, закрешится или не пройдут тесты — один хрен, нужно останавливать и устранять проблему.

·>Мой тезис, что этот код — только выкинуть, практической пользы ноль, никакую задачу он не решает.


Я тебе таких "тезисов" нагенерю вагон и маленькую тележку. Кто тебе обещал, что твои "тезисы" имеют какой-то вес?

·>А неговна у тебя не получилось.


Так неговна не было уже на уровне оригинала.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[37]: Как в одну строку кода прочитать содержимое файла в
От: rg45 СССР  
Дата: 08.01.24 17:36
Оценка:
Здравствуйте, ·, Вы писали:

·>О госспади. "bytes from a file".


Да что ты все ладошки к своему личику лепишь. У тебя как с ориентацией вообще?

·>Если в файле нулевых байт нет и никогда не было, то твоя функция не имеет права возращать нули. Или у тебя UB головного мозга?


Дядя, ты тупой? Я тебе уже разжевал все несколько раз — то, что в файле не будет нулевых байт, не означает, что такая последовательность байт когда либо существовала в природе.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[36]: Как в одну строку кода прочитать содержимое файла в
От: · Великобритания  
Дата: 08.01.24 17:48
Оценка:
Здравствуйте, rg45, Вы писали:

R>·>Нет, не был. Что такая функция не подходит для больших файлов — это ясно сразу. Как и mmf не подходит для маленьких файлов и уж тем более для "нефайлов". Если ты не понимаешь какое апи надо использовать каких ситуациях, это говорит об отсутствии опыта.

R>Слушай, ну давай вот только не будем будем опытом меряться, то что твое мнение не совпадает с моим не ставит тебя выше меня аж ни разу. Если ты признаешь, что у ФУНКЦИИ ОБЩЕГО ПРИМЕНЕНИЯ ReadAllBytes существуе область применения,
Тавтология. Мне бы хотелось посмотреть на функцию для которой не существует области применения.

R>то почему отказываешь в этом праве ЧАСТНОЙ функции read_all_bytes.

Впрочем могу согласится, что для твоего read_all_bytes — области применения нет, её нигде нельзя использовать. Ну от силы для какого-нибудь мелкого скрипта на выброс может быть...

R>·>А ты можешь описать возможную конкретную задачу, для которой твой код read_all_bytes подойдёт?

R>Зачитка тестовых данных, например. Вылетит по исключению, закрешится или не пройдут тесты — один хрен, нужно останавливать и устранять проблему.
Конечно нельзя. У тебя отсутвтующий файл идентичен пустому. Это опасно даже для тестов. Думай дальше.

R>·>Мой тезис, что этот код — только выкинуть, практической пользы ноль, никакую задачу он не решает.

R>Я тебе таких "тезисов" нагенерю вагон и маленькую тележку. Кто тебе обещал, что твои "тезисы" имеют какой-то вес?
Нагенери.

R>·>А неговна у тебя не получилось.

R>Так неговна не было уже на уровне оригинала.
Тут согласен. В шарпе тоже говно, но это потому что оно вин-онли для индусов. А вообще, read all bytes — нужная и полезная на практике вещь.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[38]: Как в одну строку кода прочитать содержимое файла в
От: · Великобритания  
Дата: 08.01.24 17:54
Оценка:
Здравствуйте, rg45, Вы писали:

R>·>О госспади. "bytes from a file".

R>Да что ты все ладошки к своему личику лепишь. У тебя как с ориентацией вообще?
Мде, совсем слил.

R>·>Если в файле нулевых байт нет и никогда не было, то твоя функция не имеет права возращать нули. Или у тебя UB головного мозга?

R>Дядя, ты тупой? Я тебе уже разжевал все несколько раз — то, что в файле не будет нулевых байт, не означает, что такая последовательность байт когда либо существовала в природе.
Речь идёт о байтах. Если нулевых байт в файле не было, то и твоя функция, читающая байты из файла не имеет права нули выдавать. Причём тут последовательность? Где ты про последовательности вообще увидел? Это всё твои домыслы и фантазии, и я даже знаю откуда.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[33]: Как в одну строку кода прочитать содержимое файла в
От: B0FEE664  
Дата: 08.01.24 18:01
Оценка:
Здравствуйте, ·, Вы писали:

·>Видимо, у нас разные приоритеты. По моему опыту загрузка терабайтных файлов в память целиком — вот это уж точно не нужно. Ни разу с такой необходимостью не сталкивался (и ты тоже, похоже), а вот остальное — нужно практически всегда.

PDF файлы бывают очень большие... (10,000+ pages)

Кстати, а это ограничение в 2147483647 только для 32-битной JVM и для 64-битной JVM его нет?
И каждый день — без права на ошибку...
Re[37]: Как в одну строку кода прочитать содержимое файла в
От: rg45 СССР  
Дата: 08.01.24 18:03
Оценка:
Здравствуйте, ·, Вы писали:

·>Тавтология. Мне бы хотелось посмотреть на функцию для которой не существует области применения.


Ага, себе это скажи.

·>Впрочем могу согласится, что для твоего read_all_bytes — области применения нет, её нигде нельзя использовать. Ну от силы для какого-нибудь мелкого скрипта на выброс может быть...


Почему нет — например, для демострации того, что File.ReadAllBytes — говно — чем тебе не область применения?

R>>Зачитка тестовых данных, например. Вылетит по исключению, закрешится или не пройдут тесты — один хрен, нужно останавливать и устранять проблему.

·>Конечно нельзя. У тебя отсутвтующий файл идентичен пустому.

Ну у меня тест в этом случае просто не пройдет.

·>Это опасно даже для тестов.


Да что ты говоришь?

·>Думай дальше.


Убавь повелительного наклонения, а то ты пойдешь сейчас дальше.

R>>Я тебе таких "тезисов" нагенерю вагон и маленькую тележку. Кто тебе обещал, что твои "тезисы" имеют какой-то вес?

·>Нагенери.

Да пожалуста: "Земля имет форму чемодана". Хватит, или еще?

R>>Так неговна не было уже на уровне оригинала.

·>Тут согласен. В шарпе тоже говно, но это потому что оно вин-онли для индусов.

Я тогда не пойму, по какой теме ты тут выступаешь.

R>А вообще, read all bytes — нужная и полезная на практике вещь.


Опять "тезисы", да? Или вечернаяя молитва?
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[39]: Как в одну строку кода прочитать содержимое файла в
От: rg45 СССР  
Дата: 08.01.24 18:07
Оценка:
Здравствуйте, ·, Вы писали:

·>Мде, совсем слил.


К этой мантре еще "я не укаклся" обычно читают.

·>Речь идёт о байтах. Если нулевых байт в файле не было, то и твоя функция, читающая байты из файла не имеет права нули выдавать. Причём тут последовательность? Где ты про последовательности вообще увидел? Это всё твои домыслы и фантазии, и я даже знаю откуда.


Ты и правда тугой какой-то. При том, что ты при своем подходе ты так же точно не можешь быть уверен, что твоя последовательность когда-либо существовала в природе, это всего-лишь предмет твоей веры. То, что у тебя хвост не будет согласован с головой — ни разу не лучше нулей и точно так же "хэппи дебаг".
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[37]: Как в одну строку кода прочитать содержимое файла в
От: rudzuk  
Дата: 08.01.24 18:09
Оценка:
Здравствуйте, ·, Вы писали:

·> Тут согласен. В шарпе тоже говно, но это потому что оно вин-онли для индусов. А вообще, read all bytes — нужная и полезная на практике вещь.


Уж лет семь-восемь, как не вин-онли.
avalon/3.0.2
Re[20]: Как в одну строку кода прочитать содержимое файла в
От: · Великобритания  
Дата: 08.01.24 18:16
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>>>·>А "std::time" тоже бесполезный, кстати?

BFE>>>Как стандарт — нормально, а вот из-за имплантаций нас скоро будет ждать БадаБум.
BFE>·>Не понял мысль.
BFE>2038-01-19
А, ну да.

BFE>>>И это абстрактная прокладка позволяет адаптировать стандартный код под любую операционную систему. Таким образом сама операционная система гвоздями к стандарту не прибита.

BFE>·>Угу. Ты сам на свой вопрос ответил.
BFE>Разумеется. Мой ответ я и так знал. Для меня (имплементация != абстракция), поэтому readAllBytes не нужна.
Неясно чем абстракция "Reads all the bytes from a file" недостаточно абстрактна для тебя.

BFE>>>Причём тут size? Разве Files.newByteChannel(path) не бросит исключение на такие файлы? Или в Java можно создавать SeekableByteChannel для файлов без произвольного доступа?

BFE>·>Да, вроде, можно. По крайней мере этот код /proc/self хорошо читает.
BFE>А последовательный порт?
Проверю дома, отпишусь. Предполагаю, будет читать до EOF.

BFE>>>Да. При создании авторы Java обещали, что в Java всё будет красиво, не как в C++.

BFE>·>В том смысле, что весь кошмар и ужас запрятан внутре авторами Java, а снаружи просто readAllBytes. Так и есть в данном случае.
BFE>Нет, обещали архитектурно красивый, безопасный и вездесущий, приемлемо быстрый язык, а не вот такое вот.
Ну во-первых, jdk это не язык, а библиотека языка. А во-вторых, это обещалось для программ, написанных на этом языке, а не для деталей имплементации самого языка, там и ассемблерные вставки есть. В этом и суть — язык закрывает весь этот ужас от прикладных программистов.

BFE>>>Код падающий по исключению не надёжный.

BFE>·>С чего это?
BFE>Потому, что падающий код не надёжный.
Он не падающий, а возвращающий докуменитрованный результат. Когда у тебя какой-нибудь parse int сообщает, что парсинг не удался, это ты называешь "упало"?

BFE>>>Нет. Читаемый файл должен влезать в рамки заданные программистом, а не внутренним ограничениям.

BFE>·>Ну на некоторых системах size_t — 32 бита и всё очень даже внутренне ограниченно.
BFE>Да. И?
А файлы могут быть больше. На этой системе у кода будет UB, даже если памяти достаточно. Всмомни, что у vector есть max_size, не просто так.

BFE>>>Вот, пожалуйста, полюбуйтесь на практические результаты: здесь (About 313,000 results)

BFE>·>Ээээ... И? Не каждый файл можно загрузить в память? А чё в плюсах можно, да?
BFE>Если памяти достаточно, то — да.
Угу, угу... а мы сейчас ещё фрагментацию памяти вспомним...

BFE>>>Я с этого и начал. Читать их в память всё равно не надо.

BFE>·>_Большие_ файлы — не надо. Обычного размера файлы — надо. Ты правда будешь mmf-ить какой-нибудь там /proc/self, да?!
BFE>(Однажды у меня была задача делать MemoryMappedFile для небольших файлов, чтобы подменить содержимое без изменения самого файла. Экзотика, конечно.)
Хм. Не понял. Это как?

BFE>Отвечая на вопрос повторюсь:

BFE>Хотите ReadAllBytes() — это можно, но только если добавить ограничение на размер файла: ReadAllBytes(nMaxFileSize).
Это всё мелочи, не очень ясно какую это именно проблему решит. Впрочем, readNBytes тоже есть. И, внезапно:
    public byte[] readAllBytes() throws IOException {
        return readNBytes(Integer.MAX_VALUE);
    }
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[34]: Как в одну строку кода прочитать содержимое файла в
От: · Великобритания  
Дата: 08.01.24 18:21
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>·>Видимо, у нас разные приоритеты. По моему опыту загрузка терабайтных файлов в память целиком — вот это уж точно не нужно. Ни разу с такой необходимостью не сталкивался (и ты тоже, похоже), а вот остальное — нужно практически всегда.

BFE>PDF файлы бывают очень большие... (10,000+ pages)
И их надо _целиком_ загружать в память как массив?! Зачем?

BFE>Кстати, а это ограничение в 2147483647 только для 32-битной JVM и для 64-битной JVM его нет?

Для любой.
Повторюсь, для массивных файлов есть другой api — byte buffers и mmf. Всё равно загружать их целиком бессмысленно. Даже если у тебя что-то заработает на 10гб, всё равно для 100гб, 1тб — грохнется. Если что-то больше сотни мег, то уже надо менять дизайн системы.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[38]: Как в одну строку кода прочитать содержимое файла в
От: · Великобритания  
Дата: 08.01.24 18:24
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>·> Тут согласен. В шарпе тоже говно, но это потому что оно вин-онли для индусов. А вообще, read all bytes — нужная и полезная на практике вещь.

R>Уж лет семь-восемь, как не вин-онли.
Ну это шильдик... по сути фигня, из всех щелей лезет вин.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[40]: Как в одну строку кода прочитать содержимое файла в
От: · Великобритания  
Дата: 08.01.24 18:27
Оценка:
Здравствуйте, rg45, Вы писали:

R>·>Речь идёт о байтах. Если нулевых байт в файле не было, то и твоя функция, читающая байты из файла не имеет права нули выдавать. Причём тут последовательность? Где ты про последовательности вообще увидел? Это всё твои домыслы и фантазии, и я даже знаю откуда.

R>Ты и правда тугой какой-то. При том, что ты при своем подходе ты так же точно не можешь быть уверен, что твоя последовательность когда-либо существовала в природе, это всего-лишь предмет твоей веры. То, что у тебя хвост не будет согласован с головой — ни разу не лучше нулей и точно так же "хэппи дебаг".
А ещё эта функция кофе не варит. Какая последовательность? С чего ты взял какую-то последовательность? Где ты увидел какие-то последовательности? Это твои фантазии, сам придумал, сам с этим и спорь.
А нули — это байты, о которых прямо говорится в имени функции.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[39]: Как в одну строку кода прочитать содержимое файла в
От: rudzuk  
Дата: 08.01.24 18:31
Оценка:
Здравствуйте, ·, Вы писали:

·> R>Уж лет семь-восемь, как не вин-онли.


·> Ну это шильдик... по сути фигня, из всех щелей лезет вин.


Поясни.
avalon/3.0.2
Re[41]: Как в одну строку кода прочитать содержимое файла в
От: rg45 СССР  
Дата: 08.01.24 18:32
Оценка:
Здравствуйте, ·, Вы писали:

·>А ещё эта функция кофе не варит.


Прямо как с языка снял

·>Какая последовательность? С чего ты взял какую-то последовательность? Где ты увидел какие-то последовательности? Это твои фантазии, сам придумал, сам с этим и спорь.


А массив — это что такое по-твоему? Массив это и есть последовательность.

Сюда посмотри: https://en.cppreference.com/w/cpp/container

Sequence containers

Sequence containers implement data structures which can be accessed sequentially.
array (C++11)
static contiguous array (class template)
vector dynamic contiguous array(class template)
deque double-ended queue (class template)
forward_list (C++11) singly-linked list (class template)
list doubly-linked list


Я вот правда не пойму сейчас, ты правда настолько тупой или придуриваешься?

·>А нули — это байты, о которых прямо говорится в имени функции.


А если нулей нету, значит, все пучком да? Ну-ну, счастливого плавания.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 08.01.2024 18:36 rg45 . Предыдущая версия .
Re[25]: Как в одну строку кода прочитать содержимое файла в
От: rg45 СССР  
Дата: 08.01.24 19:07
Оценка:
Здравствуйте, ·, Вы писали:

·> Ок, не нули, а втихушку потерянные данные, это ещё хуже. НЕЛЬЗЯ терять данные. Этому ещё в садике учат. А что, кстати, для несуществующего файла будет? Или если прав на чтение нет?

·>Или это ты тоже всё "скучными частными случаями" назовёшь??!

Да на тебе, не плачь, девчонка:

std::vector<char> read_all_bytes(const std::string& path)
{
   if (std::ifstream input(path, std::ios_base::binary | std::ios_base::ate); input)
   {
      std::vector<char> bytes(input.tellg());
      input.seekg(0);
      input.read(bytes.data(), bytes.size());

      if (input.gcount() != std::streamsize(bytes.size()))
         throw std::runtime_error("File reading error");

      return bytes;
   }
   throw std::runtime_error("File not found or access denied: " + path);
}


Просто как эскиз в перспективу. Обработка ошибок ЕСЛИ она понадобится. А не понадобится, то и версия без этих проверок тоже вполне имеет право на существование в каком-то локальном контекте.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 08.01.2024 20:14 rg45 . Предыдущая версия . Еще …
Отредактировано 08.01.2024 19:26 rg45 . Предыдущая версия .
Отредактировано 08.01.2024 19:21 rg45 . Предыдущая версия .
Отредактировано 08.01.2024 19:16 rg45 . Предыдущая версия .
Re[20]: Как в одну строку кода прочитать содержимое файла в
От: · Великобритания  
Дата: 08.01.24 22:18
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>·>Да, вроде, можно. По крайней мере этот код /proc/self хорошо читает.

BFE>А последовательный порт?
Не придумал как проэмулировать последовательный порт, но попробовал с пайпом (mkfifo), работает правильно.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[42]: Как в одну строку кода прочитать содержимое файла в
От: · Великобритания  
Дата: 08.01.24 22:32
Оценка:
Здравствуйте, rg45, Вы писали:

R>·>Какая последовательность? С чего ты взял какую-то последовательность? Где ты увидел какие-то последовательности? Это твои фантазии, сам придумал, сам с этим и спорь.

R>А массив — это что такое по-твоему? Массив это и есть последовательность.
Мы читаем байты из файла, а не из массива.

R>·>А нули — это байты, о которых прямо говорится в имени функции.

R>А если нулей нету, значит, все пучком да? Ну-ну, счастливого плавания.
Конечно. Читая, например, текстовый файл логов очень неожиданно получать нули. А вот файл может внезапно обрезаться.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[43]: Как в одну строку кода прочитать содержимое файла в
От: rg45 СССР  
Дата: 08.01.24 22:36
Оценка:
Здравствуйте, ·, Вы писали:

R>>А массив — это что такое по-твоему? Массив это и есть последовательность.

·>Мы читаем байты из файла, а не из массива.

Да ну? Вот спасибо, что пояснил.

·>Конечно. Читая, например, текстовый файл логов очень неожиданно получать нули. А вот файл может внезапно обрезаться.


Ну да, и это далеко не полный список неприятностей, которые могут проийти с файлом при конкуретном достубе. Пока ты читаешь, нос, изменяется хвост и наборот, когда читаешь хвост, меняется нос. В результате ты получаешь ПОСЛЕДОВАТЕЛЬНОСТЬ (бля) байт, которая никогда не существовала в файле. Ты что, правда не догоняешь?
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 08.01.2024 22:39 rg45 . Предыдущая версия . Еще …
Отредактировано 08.01.2024 22:37 rg45 . Предыдущая версия .
Отредактировано 08.01.2024 22:37 rg45 . Предыдущая версия .
Re[26]: Как в одну строку кода прочитать содержимое файла в
От: · Великобритания  
Дата: 08.01.24 22:40
Оценка:
Здравствуйте, rg45, Вы писали:

R>Просто как эскиз в перспективу. Обработка ошибок ЕСЛИ она понадобится. А не понадобится, то и версия без этих проверок тоже вполне имеет право на существование в каком-то локальном контекте.

Хорошо, но уже лучше. И собственно — ЧТД. От обещанного двухстрочника "бысттро, кратко и эффективно" и "делается очень легко" ничего не осталось.
Тебе понадобилось десяток итераций, ревью от опытных разработчиков, и таки удалось выдать код на троечку. Осталось пофиксить баги с обработкой ошибок (погляди как оно у тебя валится если диру передать, например), поддержку нефайлов и тогда более-менее сойдёт. Ещё я не очень понимаю как эта помесь streamsize и size_type себя может вести в разных ситуациях, но вникать уже лень.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[27]: Как в одну строку кода прочитать содержимое файла в
От: rg45 СССР  
Дата: 08.01.24 22:41
Оценка:
Здравствуйте, ·, Вы писали:

·>Хорошо, но уже лучше. И собственно — ЧТД. От обещанного двухстрочника "бысттро, кратко и эффективно" и "делается очень легко" ничего не осталось.


Не, ты правда дурак. Ты что реально думаешь, я с самого начала не мог написать эти сраные проверки?

·>Тебе понадобилось десяток итераций, ревью от опытных разработчиков, и таки удалось выдать код на троечку.


Да иди ты в жопу, опытный разработчик херов. Ты напиши сначала хоть какой-нибудь код, а мы уж решим, какой ты опытный. Ты говнюк, который ничего из себя не представляет, понял? Еще и тупой, как валенок.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 08.01.2024 22:49 rg45 . Предыдущая версия . Еще …
Отредактировано 08.01.2024 22:44 rg45 . Предыдущая версия .
Отредактировано 08.01.2024 22:43 rg45 . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.