MuntashirAkon/AppManager · error · BackupException
Could not get data files
Error message
Could not get data files
What it means
Thrown by SBConverter.backupData when opening the source data zip files (internal data, external data, or OBB) throws FileNotFoundException. Only the files matching the enabled backup flags are opened, so the error names whichever data zip was requested but does not exist.
Solutions
- Disable flags in destination metadata for data types that don't exist in the source (backupExternalData / backupMediaObb / backupInternalData as applicable).
- Verify the source Swift Backup folder actually contains the data zip files expected by getIntDataFile/getExtDataFile/getObbFile.
- Re-export or re-copy the original Swift Backup archive if files are missing.
- Inspect the FileNotFoundException message to learn which specific data file path was missing.
Example fix
// before: enable all data flags unconditionally
metadata.info.flags.backupExternalData = true;
// after: enable only when the source archive exists
metadata.info.flags.backupExternalData =
new File(sourceDir, "ext_data.zip").isFile(); Defensive patterns
Strategy: validation
Validate before calling
if (flags.backupInternalData && !new File(sourceDir, "data.zip").isFile())
flags.backupInternalData = false;
if (flags.backupExternalData && !new File(sourceDir, "ext_data.zip").isFile())
flags.backupExternalData = false;
if (flags.backupMediaObb && !new File(sourceDir, "obb.zip").isFile())
flags.backupMediaObb = false; Try / catch
try { converter.convert(); }
catch (BackupException e) {
if (e.getCause() instanceof FileNotFoundException) {
// disable the missing data flag and retry
}
} Prevention
- Match backup flags to what the source archive actually contains
- Inspect the source folder contents before enabling data flags
- Re-export incomplete Swift Backup archives
- Read the FileNotFoundException cause to identify the missing file
When it happens
Trigger: convert() with backupInternalData/backupExternalData/backupMediaObb flags set while the corresponding Swift Backup source zip (app data, external data, or OBB archive) is absent from the source folder; a data-only conversion of a source that never had data backed up.
Common situations: User enabled 'backup external data' for a converted backup whose original Swift Backup only captured internal data; source folder trimmed or partially restored; OBB archive missing because the app has no OBB files but the flag was enabled anyway.
Understand the failure class
Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.
Related errors
- Could not get backup files.
- Could not get base.apk file.
- Could not get data file
- Could not get external data backup.
- Could not get internal data backup.
AI-assisted analysis of MuntashirAkon/AppManager@0152f468fc (2026-09-12).
Data as JSON: /api/errors/2dfbee0a7c16aec7.
Report an issue: GitHub.
Appendix: source
Thrown at app/src/main/java/io/github/muntashirakon/AppManager/backup/convert/SBConverter.java:214
for (Path file : sourceFiles) {
mChecksum.add(file.getName(), DigestUtils.getHexDigest(mDestMetadata.info.checksumAlgo, file));
}
}
private void backupData() throws BackupException {
List<Path> dataFiles = new ArrayList<>(3);
try {
if (mDestMetadata.info.flags.backupInternalData()) {
dataFiles.add(getIntDataFile());
}
if (mDestMetadata.info.flags.backupExternalData()) {
dataFiles.add(getExtDataFile());
}
if (mDestMetadata.info.flags.backupMediaObb()) {
dataFiles.add(getObbFile());
}
} catch (FileNotFoundException e) {
throw new BackupException("Could not get data files", e);
}
String tarType = mDestMetadata.info.tarType;
int i = 0;
for (Path dataFile : dataFiles) {
String dataBackupFilePrefix = BackupUtils.getDataFilePrefix(i++, getExt(tarType));
try (ZipInputStream zis = new ZipInputStream(new BufferedInputStream(dataFile.openInputStream()));
SplitOutputStream sos = new SplitOutputStream(mBackupItem.getUnencryptedBackupPath(), dataBackupFilePrefix, DEFAULT_SPLIT_SIZE);
BufferedOutputStream bos = new BufferedOutputStream(sos);
OutputStream os = TarUtils.createCompressedStream(bos, tarType)) {
// TODO: 31/5/21 Check backup format (each zip file has a comment section which can be parsed as JSON)
try (TarArchiveOutputStream tos = new TarArchiveOutputStream(os)) {
tos.setLongFileMode(TarArchiveOutputStream.LONGFILE_POSIX);
tos.setBigNumberMode(TarArchiveOutputStream.BIGNUMBER_POSIX);
ZipEntry zipEntry;
while ((zipEntry = zis.getNextEntry()) != null) {
File tmpFile = null;
if (!zipEntry.isDirectory()) {
// We need to use a temporary fileView on GitHub (pinned to 0152f468fc)