7
votes

Trouver un stockage de fichiers temporaire dans Java

Donc, j'écris une application Java qui utilise simple pour stocker des données sous forme de fichier XML, mais il est Enfant lent avec de gros fichiers lorsque cela stocke sur un lecteur réseau par rapport à un disque dur local. Donc, je voudrais le stocker localement avant de la copier à la destination souhaitée.

existe une manière intelligente pour trouver un stockage de fichiers local temporaire en Java de manière indépendante du système?

E.g. Quelque chose qui retourne quelque chose comme c: / temp sous Windows, / tmp sous Linux, et également pour d'autres plates-formes (telles que Mac). Je pourrais utiliser le chemin de la demande, mais le problème est que l'application Java est également exécutée à partir du lecteur réseau.


1 commentaires

Utilisez fichier.createtempfile (préfixe, suffixe) .


4 Réponses :


13
votes

Essayez:

String path = System.getProperty("java.io.tmpdir");


1 commentaires

CreateTempfile () était ce que je cherchais exactement, marqué cela comme réponse en raison de la complétude



3
votes
System.getProperty("java.io.tmpdir")
The System and Runtime classes are those whose javadocs you should check first when something related to the system is required.

0 commentaires

1
votes

essayer system.geproperty ("java.io.tmpdir");


0 commentaires

2
votes

Dans l'esprit de 'Soyons le problème "au lieu de" Répondons à la question spécifique ":

Quel type de flux d'entrée utilisez-vous lors de la lecture simple? Assurez-vous d'utiliser BufferedInputStream (ou BufferedReader) - sinon vous lisez un octet / caractère à la fois du flux, qui sera douloureusement lent lors de la lecture d'une ressource réseau.

au lieu de copier le fichier sur le disque local, tamponnez les entrées et vous serez prêt à partir.


3 commentaires

En simplifiant, vous spécifiez uniquement quelle classe doit être le point de départ de XML-Serialization et un objet de fichier à l'endroit où il doit écrire le fichier. Donc, la seule chose que j'ai besoin de savoir, c'est comment trouver le "répertoire de fichiers temporaire", que d'autres ont répondu pour moi.


Vous pouvez également utiliser des flux si vous le souhaitez, par exemple en simple que vous puissiez utiliser Serializer.Write (MyObject, nouvelle bufferedOutPutStream (nouveau fichierOutPutStream (nouveau fichier ("myfile.xml"))))). Cela va tamponner la sortie un peu mieux pour vous si vous le souhaitez.


Utilisez un courant tamponné - essayez-le, je pense que vous serez surpris de la différence.