Как далеко я знаю, два наиболее распространенных метода чтения символьно-ориентированных данных из файла в Java использует Scanner
или BufferedReader
. Я также знаю что BufferedReader
считайте файлы эффективно при помощи буфера для предотвращения операций физического диска. Мои вопросы:
Scanner
работает, а также BufferedReader
?Scanner
BufferedReader
или наоборот?Scanner
используется для разбора лексем из содержимого потока, в то время как BufferedReader
просто читает поток и не делает никакого специального разбора.
Фактически вы можете передать BufferedReader
в scanner
в качестве источника символов для разбора.
В последней версии / сборке JDK6 (b27) Scanner
имеет меньший буфер ( 1024 символа ), в отличие от BufferedReader
( 8192 символа ), но этого более чем достаточно.
Что касается выбора, используйте сканер
, если вы хотите разобрать файл, используйте BufferedReader
, если вы хотите прочитать ] файл построчно. Также см. Вводный текст их документации по API, на которую имеется ссылка выше.
nextXxx ()
в классе Scanner
. В настоящее время выполняется очистка массива имен. Необходимо вызвать массив, а затем отменить установку индекса в массиве:
$ar[0]==2
$ar[1]==7
$ar[2]==9
unset ($ar[2])
Два способа отмены установки значений в массиве:
<?php
# remove by key:
function array_remove_key ()
{
$args = func_get_args();
return array_diff_key($args[0],array_flip(array_slice($args,1)));
}
# remove by value:
function array_remove_value ()
{
$args = func_get_args();
return array_diff($args[0],array_slice($args,1));
}
$fruit_inventory = array(
'apples' => 52,
'bananas' => 78,
'peaches' => 'out of season',
'pears' => 'out of season',
'oranges' => 'no longer sold',
'carrots' => 15,
'beets' => 15,
);
echo "<pre>Original Array:\n",
print_r($fruit_inventory,TRUE),
'</pre>';
# For example, beets and carrots are not fruits...
$fruit_inventory = array_remove_key($fruit_inventory,
"beets",
"carrots");
echo "<pre>Array after key removal:\n",
print_r($fruit_inventory,TRUE),
'</pre>';
# Let's also remove 'out of season' and 'no longer sold' fruit...
$fruit_inventory = array_remove_value($fruit_inventory,
"out of season",
"no longer sold");
echo "<pre>Array after value removal:\n",
print_r($fruit_inventory,TRUE),
'</pre>';
?>
Таким образом, отмена установки не влияет на внутренний счетчик массива!!!
-121--1073621- Сканер
используется для синтаксического анализа маркеров из содержимого потока, в то время как BufferedReader
просто считывает поток и не выполняет никакого специального синтаксического анализа.
Фактически можно передать BufferedReader
сканеру
в качестве источника символов для синтаксического анализа.