# फ़ाइलें और "प्राथमिकताएँ"

> हल्का पर्सिस्टेंस हटा दिया गया — इसकी जगह क्या उपयोग करें (SQLite kv या homeFolder में फ़ाइल)।

Source: https://crossfly.dev/hi/docs/data-and-services/files-and-preferences — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# फ़ाइलें और "प्राथमिकताएँ"

यह पेज **एक हटाई गई सुविधा के बारे में ईमानदार** है। अगर आप `SharedPreferences`/`UserDefaults` ढूँढ रहे हैं, तो रुकें:
CrossFly में यह तंत्र **मौजूद नहीं है**।

## ⚠️ हल्का पर्सिस्टेंस हटा दिया गया
`Settings.appSettings`, `appSecretKey`, `refresh()` और पुराने "प्राथमिकताएँ" **अब मौजूद नहीं हैं** — और
**बाहर निकलते समय स्वचालित रूप से सहेजा नहीं जाता**। आप **स्पष्ट रूप से**, सही समय पर सहेजते हैं।

## इसकी जगह क्या उपयोग करें
| सहेजने की ज़रूरत… | उपयोग करें |
|---|---|
| फ़्लैग, थीम, अंतिम लॉगिन (की→वैल्यू) | **SQLite में की/वैल्यू टेबल** ([गाइड](/docs/data-and-services/storage-sqlite)) |
| ब्लॉब / फ़ाइलें | `Device.homeFolder` में एक **फ़ाइल** |

### SQLite में की/वैल्यू (कॉन्फ़िगरेशन के लिए अनुशंसित)
```java
try (SqliteDb db = SqliteDb.open("app.db")) {
   db.exec("CREATE TABLE IF NOT EXISTS kv(k TEXT PRIMARY KEY, v TEXT)");
   db.execute("INSERT OR REPLACE INTO kv(k, v) VALUES(?, ?)", "tema", "escuro");
   String tema = db.queryString("SELECT v FROM kv WHERE k=?", "tema");   // अनुपस्थित होने पर null
}
```

### `Device.homeFolder` में साधारण फ़ाइल
`Device.homeFolder` ऐप की बेस डायरेक्टरी है (प्लेटफ़ॉर्म के अनुसार बदलती है):
| प्लेटफ़ॉर्म | `homeFolder` |
|---|---|
| Desktop | कार्यशील डायरेक्टरी (cwd) |
| Android | ऐप का निजी स्टोरेज |
| iOS | *documents* फ़ोल्डर |

```java
String path = Device.homeFolder + "config.json";

byte[] bytes = Utils.readBytes(path);   // ⚠️ फ़ाइल मौजूद न हो तो null
if (bytes != null) {
   String json = new String(bytes);
   // … parse …
}
// अधिक नियंत्रण चाहने वाले मामलों के लिए FileHandle (libGDX):
FileHandle fh = Utils.loadFile(path);   // न मिलने पर null
```

## अच्छी प्रथाएँ
- सही बिंदुओं पर (कॉन्फ़िग सहेजते समय, स्क्रीन छोड़ते समय) **स्पष्ट रूप से सहेजें** — कुछ भी अपने
  आप पर्सिस्ट नहीं होता।
- कॉन्फ़िगरेशन के लिए अलग फ़ाइल के बजाय **SQLite kv** को प्राथमिकता दें (ट्रांज़ैक्शनल, क्वेरी करने योग्य)।
- `Utils.readBytes`/`loadFile` से **हमेशा `null` की जाँच करें** (फ़ाइल मौजूद न भी हो)।

## आम गलतियाँ
- `Settings.appSettings`/`SharedPreferences` ढूँढना — यह हटा दिया गया है; वापस नहीं आएगा।
- बंद करते समय स्वचालित सहेजने की उम्मीद करना — ऐसा नहीं है; आप स्वयं सहेजें।
- किसी न मौजूद फ़ाइल को पढ़ते समय `null` को न संभालना।

## यह भी देखें
- [SQLite के साथ पर्सिस्टेंस](/docs/data-and-services/storage-sqlite)
