Вам лучше запустить команду в консоли, чтобы лучше понять, что не так с настройками. В моем случае, когда я запустил gradlew check
, он на самом деле говорит мне, какой ссылочный проект отсутствует.
* What went wrong:
Could not determine the dependencies of task ':test'.
Could not resolve all task dependencies for configuration ':testRuntimeClasspath'.
Could not resolve project :lib-blah.
Required by:
project :
> Unable to find a matching configuration of project :lib-blah: None of the consumable configurations have attributes.
Досадно было, что при сбое импорта он не обнаружил бы значимого сообщения об ошибке. И если я прокомментировал все ссылки на проект, уверен, что он позволяет мне импортировать его, но как только я раскомментирую его, он напечатает только это неоднозначное сообщение и не скажет вам, что не так.
Невозможно записать в начало файла, как вы думаете. Это, я думаю, объясняется тем, как ОС и HDD видят файл. У этого есть фиксированный старт и расширяющийся конец. Если вы хотите что-то добавить в середине или начать, это требует некоторого скольжения. Если это небольшой файл, просто прочитайте все и выполните свои манипуляции и напишите. Но если нет, и если вы всегда добавляете в начало только обратный порядок строк, рассмотрите конец как начало ...
Если вы не хотите загружать все содержимое файла в переменную, вы можете использовать функцию PHP Streams :
function prepend($string, $orig_filename) {
$context = stream_context_create();
$orig_file = fopen($orig_filename, 'r', 1, $context);
$temp_filename = tempnam(sys_get_temp_dir(), 'php_prepend_');
file_put_contents($temp_filename, $string);
file_put_contents($temp_filename, $orig_file, FILE_APPEND);
fclose($orig_file);
unlink($orig_filename);
rename($temp_filename, $orig_filename);
}
Что это делает, это запись строку, которую вы хотите добавить к временному файлу, затем она записывает содержимое исходного файла в конец временного файла (используя потоки вместо копирования всего файла в переменную), а затем удаляет исходный файл и переименовывает временный файл для его замены.
Примечание. Этот код изначально был основан на не существующей блоге блога Чао Сю. Код с тех пор расходится, но исходный пост можно просмотреть в Wayback Machine .
Я думаю, что вы можете сначала прочитать содержимое файла и сохранить его во временной переменной, теперь вставьте новые данные в начало файла, а затем добавьте содержимое временной переменной.
$file = file_get_contents($filename); $content = 'Your Content' . $file; file_put_contents($content);
Вы можете использовать fseek
, чтобы изменить указатель в примечании.
Следует отметить, что если вы используете fwrite
, он удалит текущий контент. Поэтому в основном вы должны прочитать весь файл, использовать fseek
, написать свой новый контент, записать старые данные файла.
$file_data = file_get_contents('database.txt')
$fp = fopen('database.txt', 'a');
fseek($fp,0);
fwrite($fp, 'new content');
fwrite($fp, $file_data);
fclose($fp);
Если ваш файл действительно огромный, и вы не хотите чтобы использовать слишком много памяти, вы можете захотеть иметь два подхода к файлу, например
$fp_source = fopen('database.txt', 'r');
$fp_dest = fopen('database_temp.txt', 'w'); // better to generate a real temp filename
fwrite($fp_dest, 'new content');
while (!feof($fp_source)) {
$contents .= fread($fp_source, 8192);
fwrite($fp_dest, $contents);
}
fclose($fp_source);
fclose($fp_dest);
unlink('database.txt');
rename('database_temp.txt','database.txt');
. Решение Ben кажется более простым в моем честном мнении.
Последний пункт: Я не знаю, что у вас есть в database.txt
, но вы можете сделать то же самое проще с помощью сервера базы данных.
file_get_contents()
и file_put_contents()
используют больше памяти, чем использование функций fopen()
, fwrite()
и fclose()
:
$fh = fopen($filename, 'a') or die("can't open file");
fwrite($fh, $fileNewContent);
fclose($fh);
$handler = fopen('1.txt', 'w+');//1
rewind($handler);//3
$prepend = "I would like to add this text to the beginning of this file";
$chunkLength = strlen($prepend);//2
$i = 0;
do{
$readData = fread($handler, $chunkLength);//4
fseek($handler, $i * $chunkLength);//5
fwrite($handler, $prepend);//6
$prepend = $readData;//7
$i++;
}while ($readData);//8
fclose($handler);
Вы можете использовать следующий код для добавления текста в начале и конце файла.
$myFile = "test.csv";<br>
$context = stream_context_create();<br>
$fp = fopen($myFile, 'r', 1, $context);<br>
$tmpname = md5("kumar");<br>
//this will append text at the beginning of the file<br><br>
file_put_contents($tmpname, "kumar");<br>
file_put_contents($tmpname, $fp, FILE_APPEND);<br>
fclose($fp);<br>
unlink($myFile);<br>
rename($tmpname, $myFile);<br><br>
//this will append text at the end of the file<br>
file_put_contents($myFile, "ajay", FILE_APPEND);
Быстрая и грязная:
<?php
$file_data = "Stuff you want to add\n";
$file_data .= file_get_contents('database.txt');
file_put_contents('database.txt', $file_data);
?>