Посмотрите этот вопрос:
, как можно легко проверить, запрещен ли доступ для файла в.NET?
короткая версия того вопроса - то, что Вы не делаете, потому что файловая система энергозависима. Просто попытайтесь открыть файл и поймать исключение, если это перестало работать.
причина Ваш isFileFound
, метод не работает, состоит в том, потому что FileInfo
структура, которую Вы используете, может также использоваться для создания файлов. Можно создать объект FileInfo с желаемой информацией для несуществующего файла, звонить, это .Create()
метод, и Вы установили свои желаемые свойства внезапно.
я подозреваю причину, которую приводит к сбою путь UNC, или 1) проблема полномочий, получающая доступ к администраторской доле от пользователя, запускающего Ваше приложение, или 2) $
, символ отбрасывает метод, или потому что это не вводится правильно или из-за ошибки в базовом.Exists () реализация.
Обновление:
, Когда я отправляю это предложение, я почти всегда получаю жалобу на выполнение исключения. Давайте говорить об этом. Да, обрабатывание исключений является дорогим: очень дорогой. Существует немного вещей, которые можно сделать в программировании, которые медленнее. Но Вы знаете, какой те немного вещей? Диск и сеть I/O. Вот ссылка, которая демонстрирует, какого количества стоили дисковый ввод-вывод и сеть I/O:
Latency Comparison Numbers -------------------------- L1 cache reference 0.5 ns Branch mispredict 5 ns L2 cache reference 7 ns 14x L1 cache Mutex lock/unlock 25 ns Main memory reference 100 ns 20x L2 cache, 200x L1 cache Compress 1K bytes with Zippy 3,000 ns Send 1K bytes over 1 Gbps network 10,000 ns 0.01 ms Read 4K randomly from SSD* 150,000 ns 0.15 ms Read 1 MB sequentially from memory 250,000 ns 0.25 ms Round trip within same datacenter 500,000 ns 0.5 ms Read 1 MB sequentially from SSD* 1,000,000 ns 1 ms 4X memory Disk seek 10,000,000 ns 10 ms 20x datacenter roundtrip Read 1 MB sequentially from disk 20,000,000 ns 20 ms 80x memory, 20X SSD Send packet CA->Netherlands->CA 150,000,000 ns 150 ms
, Если взгляды в наносекундах не являются Вашей вещью, вот является другой ссылкой, которая нормализует один цикл ЦП как 1 секунду и масштабируется оттуда:
http://blog.codinghorror.com/the-infinite-space-between-words/
1 CPU cycle 0.3 ns 1 s Level 1 cache access 0.9 ns 3 s Level 2 cache access 2.8 ns 9 s Level 3 cache access 12.9 ns 43 s Main memory access 120 ns 6 min Solid-state disk I/O 50-150 μs 2-6 days Rotational disk I/O 1-10 ms 1-12 months Internet: SF to NYC 40 ms 4 years Internet: SF to UK 81 ms 8 years Internet: SF to AUS 183 ms 19 years OS virt. reboot 4 s 423 years SCSI command time-out 30 s 3000 years Hardware virt. reboot 40 s 4000 years Physical system reboot 5 m 32 millenia
Взятие даже лучший вариант развития событий для исключений, можно получить доступ к памяти по крайней мере 480 раз при ожидании на первом ответе от диска, и это принимает очень быстрый SSD. Многим из нас все еще нужны вращающиеся жесткие диски, где вещи становятся очень, намного хуже.
И это - только начало истории. Когда Вы используете .Exists()
, Вы подвергаетесь этому дополнительный стоимость (и это - дополнение: необходимо сделать ту же работу снова, когда Вы идете для открытия файла) на [1 116] каждый попытка. Вы платите, это стоит, существует ли файл или нет, потому что диск все еще должен искать его в, он - таблицы файлов. С методом исключения Вы только оплачиваете дополнительные расходы раскручивания стека вызовов в случае отказа.
, Другими словами, да: исключения являются ужасно дорогостоящими. Но по сравнению с дисковой проверкой, это еще быстрее: а не просто маленьким полем. К счастью это вряд ли определит общую эффективность Вашего приложения..., но я все еще хочу отправить "исключения спать, медленный" аргумент в пользу этой определенной задачи.
$new_array=array();
foreach($old_array as $value)
{
$new_array[]=number_format(($value/100),2);
}
См. number_format , если вы хотите поиграть с разделителем тысяч или чем-то еще. См. foreach , если вы хотите изменить значения массива на месте.
Используя number_format .
for($i=0;$i<count($array);$i++)
{
$array[$i] = number_format($array[$i]/100,2);
//if you need them as numbers
$array[$i] = (float) number_format($array[$i]/100,2);
}
Или, если вам нравятся анонимные функции и PHP 5.3:
$nums = array(1, 2, 3, 4); array_walk($nums, function (&$val, $key) { $val = number_format($val/100, 2); }); print_r($nums);
Вывод:
Array ( [0] => 1.00 [1] => 2.00 [2] => 3.00 [3] => 4.00 )
Тем не менее, ответ тот же: используйте number_format ()
.