Java enregistrement/ouverture d'un Fichier des objets
Après avoir soigneusement essayer de mettre en œuvre le protocole TCP transfert de fichier dans ma conférence de l'application de chat à l'aide de matières octet de flux, j'ai décidé qu'il est beaucoup plus facile d'envoyer des fichiers que je veux transférés par l'intermédiaire de l'objet de flux. Les fichiers sont envoyés et stockés à leur destination (si c'est le serveur central ou le téléchargement client) Fichier de la mémoire des objets. Toutefois, ces fichiers ne sont pas de l'utiliser simplement comme des objets de Fichiers - clients doivent être en mesure de les ouvrir. Est-il un moyen en java pour enregistrer le Fichier d'objets que le disque dur les fichiers ou même de les ouvrir via Java?
OriginalL'auteur Richard Stokes | 2011-11-22
Vous devez vous connecter pour publier un commentaire.
Qu'entendez-vous par "Fichier des objets"; entendez-vous
java.io.File
?Classe
java.io.File
est juste une représentation d'un nom de répertoire et nom de fichier. Il n'est pas un objet qui peut contenir le contenu d'un fichier.Si vous avez les données, par exemple dans un tableau d'octets en mémoire, alors oui, vous pouvez enregistrer dans un fichier:
Voir le E/S De Base Leçon à partir d'Oracle Java de Tutoriels pour apprendre à lire et écrire des fichiers avec un
FileInputStream
etFileOutputStream
.OriginalL'auteur Jesper
Vous devriez regarder dans Gestionnaires De Données
Vous pouvez les utiliser pour transférer des fichiers comme
Data Sources
mais dans un "transparent".OriginalL'auteur Cratylus
Il ne l'est pas. Mauvaise idée: les coûts de la mémoire et de temps de latence (c'est à dire le temps et l'espace). Il suffit d'envoyer et de recevoir les octets, avec des trucs en face de vous dire le nom de fichier et la taille du fichier.
Qui ne fonctionnera jamais. Utiliser le même cours d'eau à deux extrémités de la vie de la connexion. PrintWriter a un tampon, BufferedOutputStream a un tampon, BufferedReader a un tampon, et BufferedInputStream a un tampon. Trop grand nombre de tampons pour la cohérence à travers le fil. Je voudrais utiliser un DataOutputStream/DataInputStream pour tout, en envoyant le nom de fichier avec writeUTF()/readUTF(), la longueur de la writeLong()/readLong(), et les données avec write() et read().
Wow merci, un brio approfondie commentaire.
OriginalL'auteur user207421