File system access lets your app read and write files on the device. This helps save user data or load files anytime.
File system access in React Native
import RNFS from 'react-native-fs'; // Write a file RNFS.writeFile(path, contents, 'utf8') .then(() => console.log('File written')) .catch(err => console.log(err)); // Read a file RNFS.readFile(path, 'utf8') .then(contents => console.log(contents)) .catch(err => console.log(err));
Use react-native-fs library for file system operations in React Native.
Always handle errors to avoid app crashes.
test.txt with a simple message.const path = RNFS.DocumentDirectoryPath + '/test.txt'; const content = 'Hello from React Native!'; RNFS.writeFile(path, content, 'utf8') .then(() => console.log('File saved')) .catch(err => console.log(err));
RNFS.readFile(RNFS.DocumentDirectoryPath + '/test.txt', 'utf8') .then(contents => console.log('File content:', contents)) .catch(err => console.log(err));
This React Native component has two buttons: one to save a file with a message, and one to read that file and show its content below.
import React, { useState } from 'react'; import { View, Text, Button, Alert } from 'react-native'; import RNFS from 'react-native-fs'; export default function FileExample() { const [fileContent, setFileContent] = useState(''); const path = RNFS.DocumentDirectoryPath + '/hello.txt'; const saveFile = () => { RNFS.writeFile(path, 'Hello React Native!', 'utf8') .then(() => Alert.alert('File saved')) .catch(err => Alert.alert('Error: ' + err.message)); }; const readFile = () => { RNFS.readFile(path, 'utf8') .then(contents => setFileContent(contents)) .catch(err => Alert.alert('Error: ' + err.message)); }; return ( <View style={{ padding: 20 }}> <Button title="Save File" onPress={saveFile} /> <Button title="Read File" onPress={readFile} /> <Text style={{ marginTop: 20, fontSize: 16 }}>Content: {fileContent}</Text> </View> ); }
File paths differ by platform; use RNFS.DocumentDirectoryPath for safe storage.
Always ask for permissions if your app needs to access external storage on Android.
Test file operations on real devices as simulators may behave differently.
File system access lets apps save and load files on the device.
Use react-native-fs for easy file reading and writing.
Handle errors and permissions carefully for smooth user experience.
Practice
react-native-fs in a React Native app?Solution
Step 1: Understand the role of
This library is designed to provide file system access in React Native apps.react-native-fsStep 2: Identify the correct functionality
It allows reading and writing files on the device, unlike UI or network libraries.Final Answer:
To read and write files on the device's file system -> Option AQuick Check:
File system access = read/write files [OK]
- Confusing file system access with UI components
- Thinking it manages navigation or network calls
- Assuming it handles permissions automatically
react-native-fs in a React Native file?Solution
Step 1: Recall ES6 import syntax for default exports
react-native-fsexports a default object, so useimport RNFS from 'react-native-fs';.Step 2: Check other options
const RNFS = require('react-native-fs'); uses CommonJS require (valid but less common in modern React Native). import { RNFS } from 'react-native-fs'; incorrectly destructures. import * as RNFS from 'react-native-fs'; imports all as namespace but is not the recommended style here.Final Answer:
import RNFS from 'react-native-fs'; -> Option BQuick Check:
Default import syntax = import RNFS from 'react-native-fs'; [OK]
- Using destructuring import for default export
- Mixing require and import styles
- Using namespace import unnecessarily
test.txt contains the text "Hello World"?
import RNFS from 'react-native-fs';
RNFS.readFile(RNFS.DocumentDirectoryPath + '/test.txt', 'utf8')
.then(contents => console.log(contents))
.catch(err => console.log('Error:', err.message));Solution
Step 1: Understand readFile behavior
ThereadFilemethod reads the file content as a string when encoding is 'utf8'.Step 2: Check file content and output
The file contains "Hello World", so the promise resolves and logs this string.Final Answer:
"Hello World" -> Option DQuick Check:
readFile with utf8 returns file text [OK]
- Assuming readFile returns a buffer or object
- Expecting error if file exists
- Ignoring promise and expecting synchronous output
import RNFS from 'react-native-fs';
RNFS.writeFile('/path/to/file.txt', 'Sample text', 'utf8')
.then(() => console.log('File written'))
.catch(error => console.log('Write error:', error));Solution
Step 1: Check file path usage
In React Native, absolute paths like '/path/to/file.txt' are invalid; useRNFS.DocumentDirectoryPathor similar directory constants.Step 2: Validate other parameters
Encoding 'utf8' is valid, writeFile returns a promise, and text can be a string.Final Answer:
The file path should use RNFS.DocumentDirectoryPath or similar, not an absolute string -> Option AQuick Check:
Use RNFS paths, not absolute strings [OK]
- Using absolute file paths directly
- Misunderstanding writeFile return type
- Passing wrong data types for text
react-native-fs?Solution
Step 1: Handle permissions properly
On mobile devices, storage permission must be requested before file operations.Step 2: Use safe file paths and encoding
UseRNFS.DocumentDirectoryPathfor file location and specify encoding like 'utf8' for writing and reading.Step 3: Implement error handling
Use promises withthenandcatchto handle success and errors safely.Final Answer:
Request storage permission, write file using RNFS.DocumentDirectoryPath, then read file with error handling -> Option CQuick Check:
Permissions + RNFS paths + error handling = Request storage permission, write file using RNFS.DocumentDirectoryPath, then read file with error handling [OK]
- Skipping permission requests
- Using hardcoded absolute paths
- Ignoring promise errors
- Using wrong encoding for text files
Ready to prove it?
Pass the test and this pattern moves unknown
