# FilePicker

> आरक्षित — 2026 API में खाली ढांचा (कोई परिणाम नहीं देता)।

Source: https://crossfly.dev/hi/docs/ui/widgets/filepicker — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# FilePicker

> 🔴 · **पैकेज:** `dev.crossfly.ui.picker` · **विस्तारित करता है:** `Picker` · **स्थिति: आरक्षित (अनुपलब्ध)**

`FilePicker` 2026 API में **आरक्षित** है: वर्तमान कोड में यह केवल एक खाली ढांचा है —

```java
public class FilePicker extends Picker {}
```

— बिना कंस्ट्रक्टर, फ़ील्ड, लेआउट या अपने स्वयं के `getAnswer()` के। यह **आधार से `getAnswer()` विरासत में लेता है** ([`Picker`](/docs/ui/widgets/picker)), जो `null` लौटाता है; इसलिए यह **कोई परिणाम नहीं देता** और इसका उपयोग नहीं किया जाना चाहिए।

## पूर्ण उदाहरण (कॉपी, पेस्ट और रन करें)
`FilePicker` **आरक्षित** है और कोई परिणाम नहीं देता (आधार से `getAnswer()` विरासत में लेता है, जो `null` लौटाता है)। नीचे दिया उदाहरण निष्पादन योग्य है और इस सीमा को **ईमानदारी से** दर्शाता है: यह picker दिखाता है, `getAnswer()` एकत्र करता है और रिपोर्ट करता है कि `null` आया। वास्तव में मीडिया चुनने के लिए, बगल का बटन उपलब्ध विकल्प, [`PhotoPicker`](/docs/ui/widgets/photopicker), का उपयोग करता है।

```java
package com.exemplo;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.picker.*;

/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());

      Label saida = new Label("Resultado: —");
      add(LAY_AUTO, saida);

      // FilePicker एक आरक्षित ढांचा है: getAnswer() हमेशा null लौटाता है।
      Button tentarFilePicker = new Button("Tentar FilePicker (reservado)")
         .onAction(c ->
         {
            FilePicker fp = new FilePicker();
            fp.show(answer ->
               saida.setText("FilePicker devolveu: " + answer + " (reservado, sem resultado)"));
         });
      add(LAY_AUTO, tentarFilePicker);

      // मीडिया कैप्चर करने का वास्तविक विकल्प: PhotoPicker।
      Button usarPhotoPicker = new Button("Alternativa: PhotoPicker")
         .onAction(c ->
         {
            PhotoPicker pp = new PhotoPicker(PhotoPicker.Preview.PHOTO);
            pp.show(answer ->
            {
               String caminho = (String) answer;
               if (pp.isError())
                  saida.setText("Erro de câmera: " + caminho);
               else
                  saida.setText("Foto salva em: " + caminho);
            });
         });
      add(LAY_AUTO, usarPhotoPicker);
   }
}
```

> नीचे दिए गए अंश **केवल मुख्य भाग** दिखाते हैं (जो `onShow()` के अंदर जाता है)। रन करने के लिए, इन्हें ऊपर दिए `MainWindow` ढांचे में रखें।

## इच्छित उद्देश्य
फ़ाइल सिस्टम को नेविगेट करना और चयनित फ़ाइल/फ़ोल्डर का पथ लौटाना। स्रोत में टिप्पणी किसी root से एक lazy tree-आधारित सेलेक्टर से माइग्रेट करने के इरादे को इंगित करती है — लेकिन इसे **अभी तक पोर्ट नहीं किया गया**।

## जो मौजूद नहीं है (उपलब्ध के रूप में दस्तावेज़ न करें)
पिछला कार्यान्वयन (`Tree`/`TreeModel` के साथ lazy tree, इमेज प्रीव्यू, `Dropdown` के माध्यम से वॉल्यूम, बहु-चयन) **हटा दिया गया**, जो आधुनिकीकरण में `ui/tree` मॉड्यूल हटाने के अनुरूप है। पुराने API — `Filter`, `initialPath`, `multipleSelection`, `mountTree`, `getTree`, आदि — **अब मौजूद नहीं हैं**।

## आरक्षित रहने तक विकल्प
- कैमरे से मीडिया कैप्चर करने के लिए, [`PhotoPicker`](/docs/ui/widgets/photopicker) का उपयोग करें।
- रंग/दिनांक/समय चुनने के लिए, विशिष्ट pickers का उपयोग करें।
- कोड में सामग्री आने तक `FilePicker` को अनुपलब्ध मानें।

## यह भी देखें
- क्षेत्र गाइड: [`ui/`](/docs/ui) · रेसिपीज़: [`cookbook/`](/docs/cookbook)
- पैटर्न का आधार: [`Picker`](/docs/ui/widgets/picker)
