Работа с файлами
Для работы с файлами в React Native используется сторонняя библиотека react-native-fs, так как стандартный JavaScript не предоставляет прямого доступа к файловой системе устройства. Эта библиотека даёт возможность читать, записывать, копировать, удалять файлы и управлять директориями на уровне нативной файловой системы iOS и Android.
Установка:
npm install react-native-fs
После установки (и, при необходимости, линковки — хотя в новых версиях React Native это обычно не требуется) можно использовать глобальный объект RNFS.
Основные возможности:
- Чтение и запись текстовых и бинарных файлов.
- Работа с предопределёнными путями:
DocumentDirectoryPath,CachesDirectoryPath,MainBundlePathи др. - Скачивание файлов из сети напрямую на диск.
- Проверка существования файла, получение его размера и метаданных.
Пример сохранения изображения по URI в кэш:
import RNFS from 'react-native-fs';
const saveImageToCache = async (uri: string, filename: string): Promise<string> => {
const filePath = `${RNFS.CachesDirectoryPath}/${filename}`;
// Копируем файл из временного URI (например, после выбора через ImagePicker)
await RNFS.copyFile(uri, filePath);
return filePath; // возвращаем локальный путь для последующего использования
};
Пример чтения текстового файла:
const readFileContent = async (filename: string): Promise<string | null> => {
const filePath = `${RNFS.DocumentDirectoryPath}/${filename}`;
try {
const content = await RNFS.readFile(filePath, 'utf8');
return content;
} catch (error) {
console.error('Failed to read file', error);
return null;
}
};
Важно понимать, что разные директории имеют разное поведение:
CachesDirectoryPath— данные могут быть удалены системой при нехватке места (подходит для временных файлов, кэша).DocumentDirectoryPath— данные сохраняются между запусками и резервным копированием (подходит для пользовательских документов).
Библиотека react-native-fs работает с нативными путями, поэтому нельзя использовать её для прямого отображения файлов в компонентах без преобразования URI (например, в Image нужно использовать file:// + путь).
Этот инструмент особенно полезен для офлайн-кэширования медиа, экспорта данных в CSV/PDF или сохранения аватаров пользователя на устройстве.