Як знайти свій реальний файл?


239

Я створив БД за царством, і я не в змозі знайти файл, оскільки моя ОС (Yosemite) не має мобільної папки в / private / var / mobile.

Як я маю отримати доступ до своєї сфери роботи для роботи в браузері?

Крос, розміщений у групах Google


Перевірте це . Цей метод працює як для вкорінених, так і для не вкорінених пристроїв.
krhitesh

Відповіді:


474

Пошук Файлу Царства

Для Android

Як переглянути мій файл Realm у браузері Realm?

Для iOS

Якщо ваша програма на пристрої

Переконайтесь, що ваш пристрій підключено та перейдіть до вікна пристроїв у вікні меню «Xcode» > Пристрої (⌘⇧2). Там ви зможете вибрати свій пристрій та додаток зі списку встановлених програм із дозволом налагодження.

Вибравши додаток, перейдіть до гвинтика на панелі інструментів у нижній частині подання таблиці та виберіть «Завантажити контейнер…» . Там ви зможете перетягнути файл з розташування документів на ваш Mac. Він буде збережений у вигляді пакету xcappdata.

Коли ви відкриєте локальний шлях у Finder, куди ви його зберегли, ви можете скористатися цим пунктом, вибравши "Показати зміст пакета" у контекстному меню пошуку, коли ви виберете файл. Відкриється нове вікно пошуку, де ви знайдете своє Царство всередині наступного шляху (наприклад): AppData / Documents / default.realm (Каталог '/ private / var / mobile' - це шлях, який iOS використовує в файлова система пристрою.

Якщо ваш додаток увімкнено симулятор

Перейдіть у каталог свого користувача:

/Users/<username>/Library/Developer/CoreSimulator/Devices/<simulator-uuid>/data/Containers/Data/Application/<application-uuid>/Documents/default.realm

Напевно, найпростіший спосіб отримати поточний шлях до області за замовчуванням - це призупинити тренажер і ввести наступне в консоль LLDB:

Завдання-C :
(lldb) po [RLMRealmConfiguration defaultConfiguration].fileURL

Швидкий за допомогою Realm Objective-C :
(lldb) po RLMRealmConfiguration.defaultConfiguration().fileURL

Швидкий за допомогою Realm Swift :
(lldb) po Realm.Configuration.defaultConfiguration.fileURL

Або якщо у вас є RLMRealmпримірник, ви можете використовувати:
(lldb) po myRealm.configuration.fileURL

Потім просто скопіюйте цей шлях, відкрийте свій термінал і введіть open [Вставлений шлях сюди]

ПРИМІТКА. У деяких шляхах є пробіл, тому обов'язково використовуйте "\" перед пробілом, щоб уникнути цього

Helper Tool SimPholders

Це, мабуть, найшвидший спосіб знайти файл програми в тренажері. Встановити SimPholders . Це дозволить вам отримати доступ до каталогу документів програми безпосередньо з панелі меню.

Примітка. Деякі люди згадували, що SimPholders переніс їх у неправильну папку додатків симулятора, якщо це так для вас, роздрукуйте шлях свого царства, виконуючи описані вище дії, роздрукувавши ваш realm.path


1
після останнього оновлення виникає помилка, коли ти робиш po RLMRealm.defaultRealmPath(). У ньому сказаноcalled object type 'NSString *' is not a function or function pointer
carbonr

У мене те саме питання, що і @carbonr. Хтось може допомогти?
деніслексик

2
Версія Objective-C вище 0,97 використанняpo [[RLMRealm defaultRealm]path]
AlexHsieh

5
Частина цієї відповіді застаріла. Ось останній спосіб знайти ваш файл бази даних realm (default.realm) за допомогою RealmSwift:Realm.Configuration.defaultConfiguration.fileURL
nodebase

1
За допомогою методу RealmSwift я отримую наступне:error: use of undeclared identifier 'Realm'
Саймон Бенгтссон

122

Я знайшов найпростіший спосіб для iOS / macOS (для swift 3 Xcode 8.3)

override func viewDidLoad() {

   // for swift 2.0 Xcode 7
   print(Realm.Configuration.defaultConfiguration.fileURL!)
}

Тоді x-код введе правильний шлях, перевірте екран нижче.

введіть тут опис зображення

Тепер відкрийте Finder і натисніть + + G(команда + shift + G) та вставте шлях, який реєструється у вашому Xcode


10
шлях застарілий. використовувати Realm.Configuration.defaultConfiguration.fileURLзамість цього
hewigovens

2
Його було змінено на Realm.configuration.fileURL
Reshad

3
swift 3, xcode8.3 також працює зRealm.Configuration.defaultConfiguration.fileURL!
xmhafiz

я пішов за тим самим процесом, але я не можу знайти шлях до файлу у пошуку
RejoylinLokeshwaran

1
Це ідеально підходить для тренажеру, і як тільки ви знайдете файл, це легко натиснути cmd, щоб відкрити WIth, щоб запустити Realm Studio. Тут виникає запитання чи думка: Realm Studio потребує опції меню «Файл відкрити недавно»!
малював ..

39

Одна проста альтернатива для додатків симулятора

Створіть розумну папку / пошук у Finder. Забезпечує швидкий та простий доступ до всіх ваших файлів царства.

  1. Відкрийте папку /Users/$USER/Library/Developer/CoreSimulator/Devicesв Finder.

    З терміналом open /Users/$USER/Library/Developer/CoreSimulator/Devices

  2. Шукати .realm

  3. Змініть пошук, щоб він виглядав лише в "Devices"папці.

  1. Збережіть пошук на бічній панелі (наприклад, як Realms)

Відсортувавши за датою, ви отримаєте швидкий та простий список найновіших модифікованих .realmфайлів Simulator .


Дякую @Archdoog - не погана ідея, коли ти переглядаєш багато нових проектів з Realm
Аллен

4
Зберегти це як пошук - геніально! Дякую! :)
karlingen

22

Ось просте рішення .. Я заплутався з цим на деякий час. Варто зазначити, що це специфічний набір інструкцій із використанням Android Studio та AVD Emulator.

1) Запустіть емулятор і запустіть додаток.

2) Поки програма все ще працює, відкрийте Монітор пристроїв Android. (його на панелі інструментів поруч із піктограмами менеджера AVD та SDK)

3) Перейдіть на вкладку Провідник файлів у Моніторі пристроїв. Папок повинно бути багато.

4) Перейдіть по наступному шляху: Дані> Дані> Ім'я пакета > Файли> За замовчуванням

Вих. Якщо ви використовуєте один із прикладних проектів realm, шлях буде таким, як Data> Data> io.realm.examples.realmgridview> files> default.realm

5) Виділіть файл, натисніть на значок дискети у верхньому правому куті "витягніть файл із пристрою"

6) Збережіть його там, де хочете і зробите.


18

Те, що я зробив, було використовувати

let realm = Realm(path: "/Users/me/Desktop/TestRealm.realm")

а потім він створюється в повному обсязі на моєму робочому столі, і я можу двічі клацнути, щоб запустити браузер Realm на ньому. Пізніше я можу видалити параметр і дозволити йому використовувати розташування за замовчуванням, коли я впевнений, що все працює так, як очікувалося.


1
Я отримую помилку: "Мітки аргументів" (шлях :) "не відповідають жодним доступним перевантаженням". Будь-яка ідея чому?
Marcelo Gracietti

Це просто дивовижно ха-ха!
WilomGfx

Відмінно підходить для тестування на тренажері, але, ймовірно, не працює належним чином на реальному пристрої.
Несправність

нехай царство = спробуй! Realm (fileURL: URL (рядок: "/Users/ evidencemeSense/Desktop/TestRealm.realm")!
Harris

11

Завдання-С - [RLMRealmConfiguration defaultConfiguration].fileURL

NSLog(@"%@",[RLMRealmConfiguration defaultConfiguration].fileURL);

Напр. / Користувачі / "Ваше ім'я користувача" / Бібліотека / Розробник / CoreSimulator / Пристрої / E58645FF-90DE-434D-B2EB-FA145EB6F2EA / дані / Контейнери / Дані / Застосування / E427BD21-2CB1-4F64-9ADF-8742FF731209 / Документи /

Це найпростіша команда, яку можна запустити, щоб отримати шлях до файлу .realm. Ви побачите файл .realm після завершення всіх операцій читання та запису.

Або

Ви можете відкрити вихідний код openSim , замість утримувачів спрощень, щоб отримати доступ до каталогу документів програми безпосередньо з панелі меню


11

У наведених вище відповідях відсутній спосіб знайти файл царства в платформі Android, і повірте, цей спосіб заощадить ваші багато часу, які ми, як правило, витрачаємо на інші підходи, щоб отримати файл царства. Тож почнемо ...

Спочатку відкрийте «Провідник файлів пристроїв» в студії Android (Перегляд -> Інструменти Windows -> Провідник файлів пристроїв.

Це відкриє провідник пристроїв.

введіть тут опис зображення

тепер відкрийте дані -> дані -> (ваше_app_package_name) -> файли -> default.realm

default.realm - це файл, для якого ми тут. Тепер збережіть цей файл у своєму місці та отримайте доступ до файлу від realm_browser, і ви отримаєте свою базу даних.

ПРИМІТКА. Згаданий підхід тестується на телефоні, що не входить до коріння (один + 3).


10

Якщо ви використовуєте БД Realm за замовчуванням у симуляторі:

po Realm().configuration.fileURL

Чи можете ви додати деякі деталі?
Zeeshan

@zeeshan, призупиніть ваш тренажер під час запуску та введіть команду, а потім натисніть клавішу Enter.
superarts.org

9

Оновлена ​​відповідь у новітньому царстві:

Для Android:

замовлення stetho та https://github.com/uPhyca/stetho-realm Відеоурок тут: https://www.youtube.com/watch?v=9pFJz5VexRw

Для IOS (Swift)

Або:

debugPrint("Path to realm file: " + realm.configuration.fileURL!.absoluteString)

або

Крок 1: Побудь-де де-не-де називаємо константу. Скажімо, постійний файл

public class Constants {

    public static var dev: Bool = true

}

Крок 2: Створіть інший клас під назвою RealmFunctions.swift

import RealmSwift


func realmAndPath() -> Realm {
    if Constants.dev {
        // location of my desktop
        let testRealmURL = NSURL(fileURLWithPath: "/Users/#####/Desktop/TestRealm.realm")
        return try! Realm(fileURL: testRealmURL)
    } else {
        return try! Realm()
    }
}

Крок 3: нарешті у вашому контролері перегляду:

let realm = realmAndPath()

дякую Стюарту Лінчу за оригінальну відповідь


для swift 3 мені потрібно було перейти realm.pathнаrealm.configuration.fileURL!.absoluteString
Andy

5

Якщо ви отримуєте помилку діалогового вікна "Ввести ключ шифрування":

Я використовую Swift 2.1 з Realm 0.96.2 і отримував цю помилку при спробі відкрити файл бази даних:

"за замовчуванням" не вдалося відкрити. Він може бути зашифрованим або не знаходиться у сумісному форматі файлу. Якщо ви знаєте, що файл зашифрований, ви можете вручну ввести його ключ шифрування, щоб відкрити його.

Виявлено, що за допомогою попередньої версії браузера Realm 0.96 виправлена ​​проблема:

https://github.com/realm/realm-browser-osx/releases/tag/0.96-prerelease


3

По-перше, я визнаю, що це Android-нитка, але це перший результат пошуку цієї проблеми загалом.

Щоб відкрити останній створений Xcode Simulator Realm db в Realm Browser, ви можете використовувати цей скрипт в Automator або ввести його все в терміналі. Використовуючи Automator, я маю доступ одним мовним кліком до моєї поточної сфери.

    cd ~/Library/Developer/CoreSimulator/Devices/
    cd `ls -t | head -n 1`/data/Containers/Data/Application
    cd `ls -t | head -n 1`/Documents    
    open -a 'Realm Browser' ./default.realm

Встановіть браузер Realm. В Автоматизаторі натисніть кнопку Створити, виберіть Запустити скрипт оболонки, вставте код, змініть ім'я Db Realm, Клацніть Виконати, щоб перевірити, збережіть файл десь зручно для швидкого доступу до клацання.

Я не знаю, де я знайшов цю пораду вперше, але ця тема нагадала мені, як я отримував доступ до своїх живих даних у минулому.


3

Просто для вашої програми на iOS Simulator

Введіть

console.log (Realm.defaultPath)

у коді, наприклад: App.js


2

Я зробив це ще на крок. Я створив швидкий файл під назвою RealmFunctions, і в ньому я створив цю функцію

    import RealmSwift
    func realmAndPath() -> Realm {
        if dev {
            // location of my desktop
            return try! Realm(path: "/Users/slynch/Desktop/TestRealm.realm")
        } else {
            return try! Realm()
        }
    }

Зараз у моєму головному контролері перегляду у мене є глобальна булева змінна під назвою dev

var dev: Bool = true // when in development mode
var dev: Bool = false // when I want to run on my device or upload to app stor.

Тепер все, що я маю зробити в своєму коді - це

let realm = realmAndPath()

Тож, перебуваючи в режимі розробки, я можу знайти свою робочу базу даних на робочому столі та можу відкритись у браузері Realm.


1
Помилка: (13, 21) мітки аргументу "(path :)" не відповідають жодним доступним перевантаженням, схоже, це змінилося в новіших версіях
OWADVL

2

Я знайшов файл області дії , виконавши цю команду в терміналі: sudo find / -name "*.realm".

Сподіваюсь, це допомагає!



1

Щоб отримати шлях БД для iOS, найпростішим способом є:

  1. Запустіть додаток у тренажері
  2. Призупиніть його в будь-який час на відладчику
  3. Перейдіть до консолі (де у вас є (lldb)) та введіть:po RLMRealm.defaultRealmPath

Тада ... у тебе є шлях до вашої бази даних царства



1

Для тих, хто використовує React Native та використовує область за замовчуванням:

Realm.defaultPath


Я не можу цього знайти!
Алі Хесарі

@Natividad куди поставити цей код? якісь пропозиції щодо отримання файлу realm?
Бікрам Тапа

@AliHesari ти знайшов що-небудь?
Бикрам Тапа

componentDidMount() { console.log(Realm.defaultPath) }в моєму компоненті з використанням Realm працював на мене. Перевірте консоль xcode на шлях після цього.
Пол Шорі

0

У розділі Інструменти -> Монітор пристроїв Android

І під File Explorer. Шукайте програми. І файл знаходиться під даними / даними.


0

Правильна команда lldb для Xcode 7, Swift 2.2+ po Realm.Configuration.defaultConfiguration.path!


1
учасник не викликає, pathале fileURL: Realm.Configuration.defaultConfiguration.fileURL!
nburk

1
ви вірні ... це змінилося в realm1.0 ... я використовував версію 0.98, коли я відповів на це ... правильна відповідь po Realm.Configuration.defaultConfiguration.fileURL?.path
Marquis103

0

Рішення Swift 2.3

Простіше рішення, яке не порушиться з оновленнями Realm

    let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
    print("App Path: \(dirPaths)")

Файл .realm має бути всередині "Документи"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.