मेरे दायरे की फ़ाइल कैसे खोजें?


239

मैंने एक DB को दायरे में बनाया है और मैं फ़ाइल को नहीं ढूँढ पा रहा हूँ क्योंकि मेरे OS (Yosemite) में / mobile / प्राइवेट / var / मोबाइल में एक मोबाइल फोल्डर नहीं है।

ब्राउज़र में चलाने के लिए मुझे अपने दायरे तक कैसे पहुंचना चाहिए?

क्रॉस Google समूहों से पोस्ट किया गया


चेक इस बाहर। यह विधि रूट किए गए और अनरोट किए गए डिवाइस दोनों के लिए काम करती है।
कृतेश

जवाबों:


474

एक दायरे फ़ाइल ढूँढना

एंड्रॉयड के लिए

Realm Browser में मेरे Realm फाइल को कैसे देखें?

IOS के लिए

अगर आपका App Device पर है

सुनिश्चित करें कि आपका डिवाइस कनेक्ट है और Xcode मेनू विंडो> डिवाइसेस (⌘⇧2) में डिवाइस विंडो पर जाएं। वहां आप डिबगिंग अनुमतियों के साथ अपने डिवाइस और अपने ऐप को इंस्टॉल किए गए ऐप्स की सूची में से चुन सकेंगे।

अपना एप्लिकेशन चुनने के बाद, तालिका दृश्य के निचले भाग में टूलबार में कॉग पर जाएं और "कंटेनर डाउनलोड करें ..." चुनें । वहां आप दस्तावेज़ के स्थान से फ़ाइल को अपने मैक पर खींचने में सक्षम होंगे। इसे xcappdata बंडल के रूप में सहेजा जाएगा।

जब आप खोजक में स्थानीय पथ खोलते हैं, जहाँ आपने इसे सहेजा है , तो आप फ़ाइल का चयन करते समय खोजक के संदर्भ मेनू में "पैकेज सामग्री दिखाएँ" का चयन करके उसमें टैप कर सकते हैं । एक नई खोजक विंडो खुलेगी, जहाँ आप अपने दायरे को निम्न पथ में खोजते हैं (उदाहरण के लिए): AppData / दस्तावेज़ / default.realm (निर्देशिका '/ निजी / var / मोबाइल' वह मार्ग है, जिसका उपयोग iOS पर iOS द्वारा किया जाता है। डिवाइस फाइल सिस्टम।

यदि आपका ऐप सिम्युलेटर पर है

अपने उपयोगकर्ता की निर्देशिका पर जाएं:

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

डिफ़ॉल्ट क्षेत्र के वर्तमान पथ को प्राप्त करने का संभवतः सबसे आसान तरीका सिम्युलेटर को रोकना और एलएलडीबी मेनू में निम्नलिखित दर्ज करना है:

उद्देश्य-सी :
(lldb) po [RLMRealmConfiguration defaultConfiguration].fileURL

वास्तविक उद्देश्य-सी का उपयोग करते हुए स्विफ्ट :
(lldb) po RLMRealmConfiguration.defaultConfiguration().fileURL

दायरे का उपयोग स्विफ्ट :
(lldb) po Realm.Configuration.defaultConfiguration.fileURL

या यदि आपके RLMRealmहाथ में कोई उदाहरण है, तो आप इसका उपयोग कर सकते हैं:
(lldb) po myRealm.configuration.fileURL

फिर बस इस पथ को कॉपी करें, अपना टर्मिनल खोलें, और टाइप करें open [पास्टेड पाथ यहां]

ध्यान दें: कुछ रास्तों में एक स्थान होता है ताकि बचने के लिए स्थान से पहले "\" का उपयोग करना सुनिश्चित करें

हेल्पर टूल सिमपॉल्डर्स

यह शायद सिम्युलेटर में ऐप की फ़ाइल खोजने का सबसे तेज़ तरीका है। SimPenders स्थापित करें । यह आपको अपने ऐप के दस्तावेज़ निर्देशिका को सीधे अपने मेनू बार से एक्सेस करने की अनुमति देगा।

नोट कुछ लोगों ने उल्लेख किया है कि SimPenders उन्हें गलत सिम्युलेटर ऐप फ़ोल्डर में ले गए हैं, अगर आपके लिए यह मामला है, तो ऊपर दिए गए चरणों का पालन करके अपने दायरे को प्रिंट करें, अपने realm.path को प्रिंट करें।


1
नवीनतम अपडेट के बाद जब आप करते हैं तो एक त्रुटि होती है po RLMRealm.defaultRealmPath()। यह कहता हैcalled object type 'NSString *' is not a function or function pointer
कार्बोर

मेरे पास @carbonr जैसा ही मुद्दा है। क्या कोई मदद कर सकता है?
डेनिसलेक्सिक

2
ऑब्जेक्टिव-सी संस्करण 0.97 से ऊपर का उपयोगpo [[RLMRealm defaultRealm]path]
एलेक्सहाइश

5
इस उत्तर का एक हिस्सा अब पुराना है। यहाँ RealmSwift का उपयोग करके अपने दायरे डेटाबेस फ़ाइल (default.realm) को खोजने का सबसे हालिया तरीका है:Realm.Configuration.defaultConfiguration.fileURL
नोडबस

1
RealmSwift विधि का उपयोग करने पर मुझे निम्नलिखित मिलते हैं:error: use of undeclared identifier 'Realm'
साइमन बेंग्सटन

122

मुझे iOS / macOS के लिए सबसे सरल तरीका मिला (स्विफ्ट 3 Xcode 8.3 के लिए)

override func viewDidLoad() {

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

फिर x कोड सही पथ लॉग करेगा, नीचे दी गई स्क्रीन की जांच करें।

यहां छवि विवरण दर्ज करें

अब अपना फाइंडर खोलें और + + G(कमांड + शिफ्ट + जी) दबाएँ और अपने Xcode पर लॉग करने वाले पथ को पेस्ट करें


10
रास्ता निकाला जाता है। Realm.Configuration.defaultConfiguration.fileURLइसके बजाय का उपयोग करें
हेविगोवेंस

2
इसका नाम बदलकर Realm.configuration.fileURL
Reshad

3
स्विफ्ट 3, xcode8.3 भी साथ काम करता हैRealm.Configuration.defaultConfiguration.fileURL!
xmhafiz

मैंने उसी प्रक्रिया का पालन किया, लेकिन मैं खोजक में फ़ाइल पथ को खोजने में सक्षम नहीं
हूं

1
यह सिम्युलेटर के लिए एकदम सही है और एक बार जब आप अपनी फ़ाइल पा लेते हैं, तो यह रियल स्टूडियो को फायर करने के लिए "ओपन वेथ" पर एक आसान सीएमडी-क्लिक है। यह प्रश्न या विचार को दर्शाता है: दायरे स्टूडियो को "खुले हाल का" फ़ाइल मेनू विकल्प की आवश्यकता है!
आकर्षित ..

39

सिम्युलेटर ऐप्स के लिए एक आसान विकल्प

एक स्मार्ट फ़ोल्डर बनाएँ / खोजक में खोजें। आपके सभी दायरे की फ़ाइलों के लिए त्वरित और आसान क्लिक करने योग्य पहुँच देता है।

  1. फ़ोल्डर /Users/$USER/Library/Developer/CoreSimulator/Devicesको फाइंडर में खोलें ।

    टर्मिनल के साथ open /Users/$USER/Library/Developer/CoreSimulator/Devices

  2. निम्न को खोजें .realm

  3. "Devices"केवल फ़ोल्डर में देखने के लिए खोज बदलें ।

  1. अपने साइडबार में खोज को सहेजें (उदाहरण के रूप में)

जब तिथि के अनुसार क्रमबद्ध किया जाता है तो यह आपको नवीनतम संशोधित सिम्युलेटर .realmफ़ाइलों की त्वरित और आसान क्लिक करने योग्य सूची प्रदान करेगा ।


धन्यवाद @ अर्शदोग - एक बुरा विचार नहीं है जब आप दायरे के साथ कई नई परियोजनाओं से गुजर रहे हैं
एलन

4
एक खोज के रूप में इसे सहेजना प्रतिभा है! धन्यवाद! :)
कर्लिंग

22

यहाँ एक आसान समाधान है .. मैं थोड़ी देर के लिए यह गड़बड़ कर दी। मुझे इंगित करना चाहिए, यह एंड्रॉइड स्टूडियो और एवीडी एमुलेटर का उपयोग करने वाले निर्देशों का एक विशिष्ट सेट है।

1) एमुलेटर शुरू करें और अपना ऐप चलाएं।

2) जबकि ऐप अभी भी चल रहा है, Android डिवाइस मॉनिटर खोलें। (AVD और SDK प्रबंधक आइकन के बगल में टूलबार में)

3) डिवाइस मॉनिटर में फाइल एक्सप्लोरर टैब पर क्लिक करें। बहुत सारे फोल्डर होने चाहिए।

4) निम्नलिखित पथ को नेविगेट करें: डेटा> डेटा> आपका पैकेज नाम > फाइलें> डिफ़ॉल्ट। आरईएलएम (या आपने जो भी नाम दिया है)

पूर्व। यदि आप वास्तविक उदाहरण परियोजनाओं में से एक का उपयोग कर रहे हैं, तो पथ कुछ इस तरह होगा डेटा> डेटा> io.realm.examples.realmgridview> फाइलें> default.realm

5) फ़ाइल को हाइलाइट करें, ऊपरी दाएँ क्षेत्र में फ्लॉपी डिस्क आइकन पर क्लिक करें "डिवाइस से एक फ़ाइल खींचें"

६) जहाँ चाहो और करवाओ, इसे बचाओ।


18

मैंने जो किया वह उपयोग करना था

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

और फिर यह मेरे डेस्कटॉप पर पूर्ण दृश्य में बन जाता है और मैं इस पर Realm Browser लॉन्च करने के लिए डबल-क्लिक कर सकता हूं। बाद में, मैं पैरामीटर को हटा सकता हूं और जब मैं संतुष्ट हो जाता हूं तो यह डिफ़ॉल्ट स्थान का उपयोग कर सकता है।


1
मुझे यह कहते हुए त्रुटि हुई कि "तर्क लेबल '(पथ :)' किसी भी उपलब्ध अधिभार से मेल नहीं खाता"। कोई विचार क्यों?
मार्सेलो ग्रासीटीटी

यह सिर्फ अद्भुत haha ​​है!
विल्मोफ़्फ़क्स

सिम्युलेटर पर परीक्षण के लिए अच्छा है, लेकिन शायद एक असली डिवाइस पर सही ढंग से काम नहीं करेगा।
मालफंक्शन

चलो दायरे = कोशिश करो! दायरे (fileurl: URL (string: "/Users/ Ismeiding/Desktop/TestRealm.realm")!)
हैरिस

11

उद्देश्य सी - [RLMRealmConfiguration defaultConfiguration].fileURL

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

Eg- / उपयोगकर्ताओं / "आपका-उपयोगकर्ता के नाम" / Library / डेवलपर / CoreSimulator / उपकरण / E58645FF-90DE-434D-B2EB-FA145EB6F2EA / डेटा / कंटेनर / डेटा / आवेदन / E427BD21-2CB1-4F64-9ADF-8742FF731209 / दस्तावेज़ /

यह सबसे आसान कमांड है, जिसे आप अपने .realm फ़ाइल में पा सकते हैं। आपके सभी पढ़ने और लिखने के संचालन के पूरा होने के बाद आपको .realm फ़ाइल दिखाई देगी।

या

आप आप खुला स्रोत कर सकते हैं openSim , के वैकल्पिक simpholders को अपने ऐप्लिकेशन के दस्तावेजों निर्देशिका सीधे अपने मेनू पट्टी से उपयोग करने के लिए


11

उपरोक्त उत्तर एंड्रॉइड प्लेटफ़ॉर्म में दायरे की फ़ाइल को खोजने का एक तरीका याद कर रहे हैं और मुझे विश्वास है कि इस तरह से आपके बहुत समय की बचत होगी जो कि हम आम तौर पर दायरे फ़ाइल प्राप्त करने के लिए अन्य तरीकों में बर्बाद करते हैं। चलिए, शुरू करते हैं...

सबसे पहले एंड्रॉइड स्टूडियो में "डिवाइस फाइल एक्सप्लोरर" खोलें (देखें -> उपकरण विंडोज -> डिवाइस फाइल एक्सप्लोरर।

यह आपके डिवाइस एक्सप्लोरर को खोलेगा।

यहां छवि विवरण दर्ज करें

अब डेटा खोलें -> डेटा -> (your_app_package_name) -> फ़ाइलें -> default.realm

default.realm वह फाइल है जिसके लिए हम यहां हैं। अब इस फ़ाइल को अपने स्थान पर Save_as करें और फ़ाइल को realm_browser से एक्सेस करें और आपको अपना डेटाबेस मिल जाएगा।

नोट: गैर-रूट किए गए फोन (एक + 3) पर उल्लेखित दृष्टिकोण का परीक्षण किया जाता है।


10

यदि आप सिम्युलेटर में डिफ़ॉल्ट दायरे DB का उपयोग कर रहे हैं:

po Realm().configuration.fileURL

क्या आप कुछ विवरण जोड़ सकते हैं?
जीशान

@zeeshan दौड़ते समय अपने सिम्युलेटर को रोकें, और कमांड टाइप करें, फिर एंटर दबाएं।
superarts.org

9

नवीनतम दायरे के अपडेट किए गए उत्तर:

एंड्रॉयड के लिए:

चेकआउट स्टेथो और https://github.com/uPhyca/stetho-realm वीडियो ट्यूटोरियल यहां: https://www.youtube.com/watch?v=9pFJz5VexRw

IOS (स्विफ्ट) के लिए

कोई एक:

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()

मूल उत्तर के लिए स्टीवर्ट लिंच को धन्यवाद


स्विफ्ट 3 के लिए मुझे बदलने की जरूरत realm.pathहैrealm.configuration.fileURL!.absoluteString
एंडी

5

यदि आपको 'एनक्रिप्शन एन्क्रिप्शन कुंजी' डायलॉग बॉक्स त्रुटि मिल रही है:

मैं Realm 0.96.2 के साथ Swift 2.1 का उपयोग कर रहा हूं और डेटाबेस फ़ाइल को खोलने का प्रयास करते समय यह त्रुटि हो रही थी:

'डिफ़ॉल्ट' खोला नहीं जा सका। यह एन्क्रिप्ट किया जा सकता है, या यह एक संगत फ़ाइल प्रारूप में नहीं है। यदि आपको पता है कि फ़ाइल एन्क्रिप्ट की गई है, तो आप इसे खोलने के लिए मैन्युअल रूप से इसकी एन्क्रिप्शन कुंजी दर्ज कर सकते हैं।

पाया कि दायरे ब्राउज़र 0.96 के पूर्व-रिलीज़ संस्करण का उपयोग करके समस्या को हल किया गया:

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


3

सबसे पहले, मैं स्वीकार करता हूं कि यह एक एंड्रॉइड थ्रेड है लेकिन सामान्य रूप से इस मुद्दे के लिए यह पहला खोज परिणाम है।

सबसे हाल ही में बनाए गए Xcode Simulator Realm db को Realm Browser में खोलने के लिए आप इस स्क्रिप्ट को 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 नाम बदलें, परीक्षण के लिए क्लिक करें पर क्लिक करें, त्वरित क्लिक एक्सेस के लिए सुविधाजनक फ़ाइल को कहीं भी सहेजें।

मुझे नहीं पता कि मुझे पहली बार यह टिप कहां से मिली लेकिन इस धागे ने मुझे याद दिलाया कि मैं अतीत में अपने लाइव डेटा को कैसे एक्सेस कर रहा था।


3

बस आपके ऐप के लिए आईओएस सिम्युलेटर पर है

दर्ज

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()
        }
    }

अब मेरे मुख्य दृश्य नियंत्रक में, मेरे पास एक वैश्विक बूलियन चर है जिसे देव कहा जाता है

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()

इसलिए जब विकास मोड में, मैं अपने डेस्कटॉप पर अपने दायरे का पता लगा सकता हूं और दायरे के ब्राउज़र में खोल सकता हूं।


1
त्रुटि: (13, 21) तर्क लेबल '(पथ :)' किसी भी उपलब्ध अधिभार से मेल नहीं खाता है, ऐसा लगता है कि यह नए संस्करणों में बदल गया है
OWADVL

2

मुझे टर्मिनल में यह आदेश जारी करके मेरी वास्तविक फ़ाइल मिली: sudo find / -name "*.realm" :।

उम्मीद है की यह मदद करेगा!



1

IOS के लिए DB पथ प्राप्त करना, सबसे सरल तरीका है:

  1. सिम्युलेटर में अपना ऐप लॉन्च करें
  2. डिबगर में किसी भी समय इसे रोकें
  3. कंसोल (जहां आपके पास है (lldb)) पर जाएं और टाइप करें:po RLMRealm.defaultRealmPath

टाडा ... आपके पास अपने दायरे डेटाबेस के लिए रास्ता है



1

प्रतिक्रियाशील मूल का उपयोग करने वाले और डिफ़ॉल्ट क्षेत्र का उपयोग करने वालों के लिए:

Realm.defaultPath


मुझे यह नहीं मिल रहा है!
अली हेसारी

@ यह कोड कहां रखा जाए? दायरे फ़ाइल प्राप्त करने पर कोई सुझाव?
बिक्रम थापा

@ अलीशारी क्या आपको sth मिला?
बिक्रम थापा

componentDidMount() { console.log(Realm.defaultPath) }दायरे का उपयोग करते हुए मेरे घटक ने मेरे लिए काम किया। बाद में पथ के लिए xcode कंसोल की जाँच करें।
पॉल स्कोरी

0

टूल्स के तहत -> एंड्रॉइड डिवाइस मॉनिटर

और फ़ाइल एक्सप्लोरर के तहत। क्षुधा खोजें। और फ़ाइल डेटा / डेटा के अधीन है।


0

Xcode 7, Swift 2.2+ के लिए सही lldb कमांड है po Realm.Configuration.defaultConfiguration.path!


1
सदस्य कॉल नहीं है pathलेकिन fileURL: Realm.Configuration.defaultConfiguration.fileURL!
nburk 18

1
आप सही हैं ... यह realm1.0 में बदल गया है ... मैं संस्करण 0.98 का ​​उपयोग कर रहा था जब मैंने इसका उत्तर दिया ... सही उत्तर है po Realm.Configuration.defaultConfiguration.fileURL?.path
Marquis103

0

स्विफ्ट 2.3 समाधान

आसान समाधान जो दायरे अपडेट के साथ नहीं टूटेंगे

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

.Realm फ़ाइल "दस्तावेज़" के अंदर होनी चाहिए

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.