fix: Files added to the temp directory gets an index to make them unique
Unzipped files are added to a subdirectory named after the zip file to avoid name clashes.
This commit is contained in:
parent
74101a8812
commit
dff20f56a5
|
@ -42,6 +42,7 @@ public class GamebaseImporter
|
|||
|
||||
private String joyBase = ":JU,JD,JL,JR,JF,JF,SP,EN,,F1,F3,F5,,,";
|
||||
private List<GbGameInfo> gbGameInfoList = new ArrayList<>();
|
||||
private int importIndexForTempFiles = 0;
|
||||
|
||||
private Options selectedOption = Options.FAVORITES;
|
||||
private String titleQueryString = "";
|
||||
|
@ -555,16 +556,18 @@ public class GamebaseImporter
|
|||
}
|
||||
|
||||
File gameFile = gbPath.resolve(filenameInGb).toFile();
|
||||
//Increase index to be sure file names are unique in the temp folder
|
||||
importIndexForTempFiles++;
|
||||
if (isVic20cart)
|
||||
{
|
||||
return FileManager
|
||||
.getTempFileForVic20Cart(new BufferedInputStream(new FileInputStream(gameFile)), gameFile.getName()).toPath()
|
||||
.getTempFileForVic20Cart(new BufferedInputStream(new FileInputStream(gameFile)), importIndexForTempFiles + "_" + gameFile.getName()).toPath()
|
||||
.toString();
|
||||
}
|
||||
else
|
||||
{
|
||||
File selectedFile = FileManager.createTempFileForScraper(new BufferedInputStream(new FileInputStream(gameFile)),
|
||||
gameFile.getName());
|
||||
importIndexForTempFiles + "_" + gameFile.getName());
|
||||
//Do not compress prg files: Vice doesn't seem to unzip them properly
|
||||
String lowercaseName = selectedFile.getName().toLowerCase();
|
||||
if (lowercaseName.endsWith(".gz") || lowercaseName.endsWith(".prg") || lowercaseName.endsWith(".p00") )
|
||||
|
@ -584,5 +587,6 @@ public class GamebaseImporter
|
|||
{
|
||||
gbGameInfoList.clear();
|
||||
FileManager.deleteTempFolder();
|
||||
importIndexForTempFiles = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ import java.util.zip.ZipEntry;
|
|||
import javax.imageio.ImageIO;
|
||||
|
||||
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
@ -1131,6 +1132,8 @@ public class FileManager
|
|||
|
||||
public static File unzipAndPickFirstEntry(File file)
|
||||
{
|
||||
String unzippedBasePath = TEMP_PATH + File.separator + FilenameUtils.removeExtension(file.getName()) + File.separator;
|
||||
|
||||
String zipFilePath = file.getAbsolutePath();
|
||||
Path filePath = null;
|
||||
FileInputStream fis;
|
||||
|
@ -1144,9 +1147,9 @@ public class FileManager
|
|||
if (ze != null)
|
||||
{
|
||||
String fileName = ze.getName();
|
||||
File newFile = new File(TEMP_PATH + File.separator + fileName);
|
||||
File newFile = new File(unzippedBasePath + fileName);
|
||||
//create directories for sub directories in zip
|
||||
new File(newFile.getParent()).mkdirs();
|
||||
new File(newFile.getParentFile().getParent()).mkdirs();
|
||||
FileOutputStream fos = new FileOutputStream(newFile);
|
||||
int len;
|
||||
while ((len = zis.read(buffer)) > 0)
|
||||
|
@ -1170,6 +1173,7 @@ public class FileManager
|
|||
|
||||
public static File unrarAndPickFirstEntry(File file)
|
||||
{
|
||||
String unzippedBasePath = TEMP_PATH + File.separator + FilenameUtils.removeExtension(file.getName()) + File.separator;
|
||||
Path filePath = null;
|
||||
try (Archive archive = new Archive(file))
|
||||
{
|
||||
|
@ -1177,7 +1181,11 @@ public class FileManager
|
|||
FileHeader fh = archive.nextFileHeader();
|
||||
if (fh != null)
|
||||
{
|
||||
File fileEntry = new File(TEMP_PATH + File.separator + fh.getFileNameString().trim());
|
||||
File fileEntry = new File(unzippedBasePath + fh.getFileNameString().trim());
|
||||
//create directories for sub directories in rar
|
||||
new File(fileEntry.getParentFile().getParent()).mkdirs();
|
||||
|
||||
|
||||
FileOutputStream os = new FileOutputStream(fileEntry);
|
||||
archive.extractFile(fh, os);
|
||||
os.close();
|
||||
|
|
Loading…
Reference in New Issue