J'ai besoin de créer un fichier temporaire, alors j'ai essayé ceci:
String[] TempFiles = {"c1234c10","c1234c11","c1234c12","c1234c13"};
for (int i = 0; i <= 3; i++) {
try {
String tempFile = TempFiles[i];
File temp = File.createTempFile(tempFile, ".xls");
System.out.println("Temp file : " + temp.getAbsolutePath());
} catch (IOException e) {
e.printStackTrace();
}
}
La sortie ressemble à ceci:
Temp file : C:\Users\MD1000\AppData\Local\Temp\c1234c108415816200650069233.xls
Temp file : C:\Users\MD1000\AppData\Local\Temp\c1234c113748833645638701089.xls
Temp file : C:\Users\MD1000\AppData\Local\Temp\c1234c126104766829220422260.xls
Temp file : C:\Users\MD1000\AppData\Local\Temp\c1234c137493179265536640669.xls
Maintenant, je ne veux pas les numéros supplémentaires (long int) qui sont ajoutés au nom du fichier. Comment puis-je y arriver? Merci
Commencez par utiliser l'extrait de code suivant pour obtenir le répertoire temporaire du système:
String tDir = System.getProperty("Java.io.tmpdir");
Utilisez ensuite la variable tDir
avec votre tableau tempFiles[]
pour créer chaque fichier individuellement.
Vous ne pouvez pas utiliser File.createTempFile
pour générer un nom de fichier temporaire. J'ai consulté le source Java pour générer un fichier temporaire (pour Java 1.7, vous n'avez pas indiqué votre version, alors je viens d'utiliser le mien):
private static class TempDirectory {
private TempDirectory() { }
// temporary directory location
private static final File tmpdir = new File(fs.normalize(AccessController
.doPrivileged(new GetPropertyAction("Java.io.tmpdir"))));
static File location() {
return tmpdir;
}
// file name generation
private static final SecureRandom random = new SecureRandom();
static File generateFile(String prefix, String suffix, File dir) {
long n = random.nextLong();
if (n == Long.MIN_VALUE) {
n = 0; // corner case
} else {
n = Math.abs(n);
}
return new File(dir, prefix + Long.toString(n) + suffix);
}
}
C'est le code dans le JDK Java qui génère le nom du fichier temporaire. Vous pouvez voir qu'il génère un nombre aléatoire et l'insère dans votre nom de fichier entre votre préfixe et votre suffixe. C'est dans "File.Java" (en Java.io). Je n'ai vu aucun moyen de changer cela.
Utiliser Goyave :
import com.google.common.io.Files;
...
File myTempFile = new File(Files.createTempDir(), "MySpecificName.png");
Si vous souhaitez que des fichiers portant des noms spécifiques soient créés dans le répertoire temporaire du système, développez la variable d'environnement %temp%
et créez le fichier manuellement, rien de mal à cela.
Edit: En fait, utilisez System.getProperty("Java.io.tmpdir"));
pour cela.
Les noms personnalisés peuvent être enregistrés comme suit
File temp=new File(tempFile, ".xls");
if (!temp.exists()) {
temp.createNewFile();
}
Vous pouvez créer un répertoire temporaire puis y stocker de nouveaux fichiers. De cette façon, tous les nouveaux fichiers que vous ajouterez n'auront pas une extension aléatoire. Lorsque vous avez terminé, il ne vous reste plus qu'à supprimer le répertoire temporaire que vous avez ajouté.
public static File createTempFile(String prefix, String suffix) {
File parent = new File(System.getProperty("Java.io.tmpdir"));
File temp = new File(parent, prefix + suffix);
if (temp.exists()) {
temp.delete();
}
try {
temp.createNewFile();
} catch (IOException ex) {
ex.printStackTrace();
}
return temp;
}
public static File createTempDirectory(String fileName) {
File parent = new File(System.getProperty("Java.io.tmpdir"));
File temp = new File(parent, fileName);
if (temp.exists()) {
temp.delete();
}
temp.mkdir();
return temp;
}
public static File createTempDirectory(String dirName) {
File baseDir = new File(System.getProperty("Java.io.tmpdir"));
File tempDir = new File(baseDir, dirName);
if (tempDir.mkdir()) {
return tempDir;
}
return null;
}