Использование некоторое программное обеспечение с открытым исходным кодом, как . Наверняка существуют ошибки, и Вам будет нужно в том, что еще не там или находится на рассмотрении исправление ошибки. Это происходит все время.:)
, Если Вы расширяетесь/настраиваете версию с открытым исходным кодом тогда, необходимо поддержать ее. Теперь приложение, которое является, предполагает для помощи Вам с тестированием , денежные заявки подающего станут нагрузкой для поддержки.
Справочник по API для BufferedWriter и PrintWriter подробно описывает различия.
Основная причина использования PrintWriter - получить доступ к printXXX такие методы, как println (). По сути, вы можете использовать PrintWriter для записи в файл точно так же, как вы использовали бы System.out для записи в консоль.
BufferedWriter - это эффективный способ записи в файл (или что-либо еще), поскольку он буферизует символы в памяти Java перед (возможно, в зависимости от реализации) переходят на C для записи в файл.
Не существует такого понятия, как «PrintReader»; ближайший к вам, вероятно, java.util.Scanner .
Я удивлен, что никто еще не предложил использовать настоящий FlowDocument для создания пользовательского интерфейса.
Я использовал FlowDocument
раньше, чтобы добиться сложных договоренностей. Он работает достаточно хорошо, за исключением того, что наследование некоторых свойств блокируется (например, TextElement.FontSize
). Это несложно обойти.
В вашем случае просто разделите №2 на отдельный UserControl для каждого раздела, а внутри вашего FlowDocument используйте InlineUIContainer для обертывания каждого раздела.
<Window>
<DockPanel>
... toolbars, etc ...
<FlowDocumentScrollViewer ...>
<FlowDocument>
...
<InlineUIContainer>
<my:PartialNumberTwo DataContext="{Binding ...}" />
</InlineUIContainer>
...
Конечно, есть ограничения на то, что FlowDocument может сделать, поэтому он может не сработать для вашего сценария.
Чрезвычайно гибкий вариант - создать настраиваемую панель, которая размещает свои дочерние элементы в стиле WrapPanel, но делает это путем подгонки прямоугольников, и перед запуском она отмечает любую перекрывающуюся область панелью ' но самое важное (и тревожное) отличие, о котором следует помнить, заключается в том, что он проглатывает исключения .
Вы можете позже вызвать checkError
, чтобы узнать, произошли ли какие-либо ошибки, но обычно вы бы использовали PrintWriter
для таких вещей, как запись в консоль - или в "быстрых и грязных" приложениях, где вы не хотите, чтобы вас беспокоили исключения (и где долгосрочная надежность не является проблема).
Я не уверен, почему аспекты «дополнительных возможностей форматирования» и «не принимать исключения» объединены в один и тот же класс - форматирование, очевидно, полезно во многих местах, где вы не хотят, чтобы исключения проглатывались. Было бы неплохо, если бы BufferedWriter
в какой-то момент получил те же возможности ...
Вы можете позже вызвать checkError
, чтобы узнать, произошли ли какие-либо ошибки, но обычно вы используете PrintWriter
для таких вещей, как запись в консоль - или в "быстром" «грязные» приложения, в которых вы не хотите, чтобы вас беспокоили исключения (и где долгосрочная надежность не является проблемой).
Я не уверен, почему «дополнительные возможности форматирования» и «не проглатывают исключения» "аспекты объединены в один и тот же класс - форматирование, очевидно, полезно во многих местах, где вы не хотите, чтобы исключения проглатывались. Было бы неплохо, если бы BufferedWriter
в какой-то момент получил те же возможности ...
Вы можете позже вызвать checkError
, чтобы узнать, произошли ли какие-либо ошибки, но обычно вы используете PrintWriter
для таких вещей, как запись в консоль - или в "быстром" «грязные» приложения, в которых вы не хотите, чтобы вас беспокоили исключения (и где долгосрочная надежность не является проблемой).
Я не уверен, почему «дополнительные возможности форматирования» и «не проглатывают исключения» "аспекты объединены в один и тот же класс - форматирование, очевидно, полезно во многих местах, где вы не хотите, чтобы исключения проглатывались. Было бы неплохо, если бы BufferedWriter
в какой-то момент получил те же возможности ...
BufferedWriter
в какой-то момент получил те же возможности ... t хочет, чтобы исключения проглатывались. Было бы неплохо, если бы BufferedWriter
в какой-то момент получил те же возможности ... Как сказано в ответе TofuBeer, оба имеют их специальности. Чтобы воспользоваться всеми преимуществами PrintWriter (или любого другого средства записи), но также использовать буферизованную запись, вы можете обернуть BufferedWriter необходимым следующим образом:
PrintWriter writer = new PrintWriter(
new BufferedWriter (
new FileWriter("somFile.txt")));
PrintWriter просто предоставляет методы печати на любом Writer в символьном режиме.
BufferedWriter более эффективен, чем в соответствии с его буферизованными методами. И он поставляется с методом newLine (), в зависимости от платформы вашей системы, для правильного управления текстовыми файлами.
BufferedReader позволяет читать текст из файла с байтами, преобразованными в символы. Он позволяет читать построчно.
PrintReader отсутствует, вам нужно выбрать другую реализацию Reader в соответствии с форматом вашего ввода.