Ответ 1
Используйте буфер, если поток будет иметь большой доступ. Используйте небуферизованный, если у вас будет относительно мало, относительно большой доступ.
Прошу прощения, если это дубликат, но я не смог найти окончательного ответа на то, что является наилучшей практикой для каждого типа.
Я хотел бы знать, какие подходящие условия определяют, когда следует использовать BufferedReader vs FileReader или BufferedInput/OutputStream vs FileInput/OutputStream? Есть ли какая-то формула, которая всегда подскажет вам, что подходит?
Должен ли я всегда использовать буферизацию?
Спасибо
Используйте буфер, если поток будет иметь большой доступ. Используйте небуферизованный, если у вас будет относительно мало, относительно большой доступ.
Единственный раз, когда вы должны использовать небуферизованный ввод-вывод, - это когда задержка и агрегация, вызванные буферизацией, не соответствуют вашему приложению.
"Есть ли какая-то формула, которая всегда подскажет вам, что подходит?"
Если бы это было, это уже было бы в библиотеках и не было бы конструктивным решением, которое вам нужно было бы сделать.
Поскольку нет ответа pat, вы должны принять дизайнерское решение, вы должны действительно подумать об этом.
Или вы можете попробовать обе опции и посмотреть, какая из них "лучше", исходя из вашей уникальной проблемы и ваших уникальных критериев.
Большинство стандартных библиотек ввода-вывода буферизуются. Это намек на то, что большинство операций ввода-вывода выигрывает от буферизации. Но не все. Например, для игр требуется небуферизованный доступ к элементам управления игрой.
Имейте в виду, что BufferedReader
предоставляет вам удобный метод readLine()
, который позволяет вам читать ваше содержимое по одной строке за раз.
Я предлагаю вам использовать Buffered *, если это заставляет ваше приложение работать быстрее, иначе я бы не стал его беспокоить. т.е. попробуйте его с реалистичными данными, чтобы узнать, помогает ли это.