SharedPreferences кажется уродливым решением для меня. Это гораздо более удобно, когда вы используете конструктор приложений для таких целей.
Все, что вам нужно, это использовать свой собственный класс приложения, а не по умолчанию.
public class MyApp extends Application {
public MyApp() {
// this method fires only once per application start.
// getApplicationContext returns null here
Log.i("main", "Constructor fired");
}
@Override
public void onCreate() {
super.onCreate();
// this method fires once as well as constructor
// but also application has context here
Log.i("main", "onCreate fired");
}
}
Затем вы должны зарегистрировать этот класс как ваш класс приложения в AndroidManifest.xml
<application android:label="@string/app_name" android:name=".MyApp"> <------- here
<activity android:name="MyActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
Вы даже можете нажать кнопку «Назад», поэтому приложение перейдет на задний план и не будет тратить ресурсы процессора, только ресурс памяти, а затем вы можете запустить его снова и конструктор все еще не горит, так как приложение еще не закончено.
Вы можете очистить память в диспетчере задач, чтобы все приложения были закрыты, а затем перезапустите приложение, чтобы убедиться, что ваш код инициализации снова запущен.
*/
- это шаблон, который соответствует всем подкаталогам в текущем каталоге (*
будет соответствовать всем подкаталогам файлов и ; /
ограничивает его каталогами). Точно так же, чтобы перечислить все подкаталоги в / home / alice / Documents, используйте ls -d /home/alice/Documents/*/
file *|grep directory
O / P (На моей машине) -
[root@rhel6 ~]# file *|grep directory
mongo-example-master: directory
nostarch: directory
scriptzz: directory
splunk: directory
testdir: directory
Вышеуказанный результат можно улучшить, используя cut.
file *|grep directory|cut -d':' -f1
mongo-example-master
nostarch
scriptzz
splunk
testdir
* could be replaced with any path that's permitted
file - determine file type
grep - searches for string named directory
-d - to specify a field delimiter
-f1 - denotes field 1
Попробуйте это. это будет работать на всех дистрибутивах ls -ltr | grep drw
*/
- это шаблон сопоставления имен файлов, который соответствует каталогам в текущем каталоге.
Чтобы перечислять только каталоги, мне нравится эта функция:
# long list only directories
llod () {
ls -l --color=always "$@" | grep --color=never '^d'
}
Поместите ее в свой .bashrc.
Примеры использования:
llod # long listing of all directories in current directory
llod -tr # same but in chronological order oldest first
llod -d a* # limit to directories beginning with letter 'a'
llod -d .* # limit to hidden directories
ПРИМЕЧАНИЕ: он сломается, если вы используете опцию -i
. Вот исправление для этого:
# long list only directories
llod () {
ls -l --color=always "$@" | egrep --color=never '^d|^[[:digit:]]+ d'
}
Проверьте, является ли элемент каталогом с помощью test -d
:
for i in $(ls); do test -d $i && echo $i ; done
Вот что я использую
ls -d1 /Directory/Path/*;
Я использую:
ls -d */ | cut -f1 -d'/'
Это создает один столбец без косой черты - полезно в сценариях.
Мои два цента.
echo
Пример: echo */
, echo */*/
Вот что я получил:
cs/ draft/ files/ hacks/ masters/ static/
cs/code/ files/images/ static/images/ static/stylesheets/
ls
Пример: ls -d */
Вот именно то, что я получил:
cs/ files/ masters/
draft/ hacks/ static/
Или в виде списка (с подробной информацией): ls -dl */
ls
и grep
Пример: ls -l | grep "^d"
Вот что я получил:
drwxr-xr-x 24 h staff 816 Jun 8 10:55 cs
drwxr-xr-x 6 h staff 204 Jun 8 10:55 draft
drwxr-xr-x 9 h staff 306 Jun 8 10:55 files
drwxr-xr-x 2 h staff 68 Jun 9 13:19 hacks
drwxr-xr-x 6 h staff 204 Jun 8 10:55 masters
drwxr-xr-x 4 h staff 136 Jun 8 10:55 static
Пример: for i in $(ls -d */); do echo ${i%%/}; done
Вот что я получил:
cs
draft
files
hacks
masters
static
Если вы хотите иметь '/' в качестве конечного символа команда будет: for i in $(ls -d */); do echo ${i}; done
cs/
draft/
files/
hacks/
masters/
static/
Самая короткая команда когда-либо (на самом деле взлом) для списка только каталогов. Введите в полном пути или относительном пути каталога интереса. Введите CD и поразите вкладку. Только каталоги показывают.
$ cd
Самый Короткий действительно.
Вот изменение с помощью дерева, какие выходные имена каталогов только на отдельных строках, да это ужасно, но эй, оно работает.
tree -d | grep -E '^[├|└]' | cut -d ' ' -f2
или с awk
tree -d | grep -E '^[├|└]' | awk '{print $2}'
Это, вероятно, лучше однако и сохранит /
после имени каталога.
ls -l | grep "^d" | awk '{print $9}'