2011-09-30 2 views
2

J'essaye de construire un client qui envoie la taille et le contenu de fichier au serveur.l'envoi d'un fichier en utilisant DataOutputStream dans java

J'essaie d'utiliser DataOutputStream.

Je suppose que j'ai besoin d'ouvrir le fichier et et obtenir la taille du fichier et lire le contenu et l'envoyer.

Mais je ne suis pas sûr de savoir comment mettre en œuvre ceux parce que je suis vraiment nouveau java ...

Quelqu'un peut-il me aider à ce sujet?

Merci!

Répondre

3

C'est assez simple, mais le code est un peu long pour tout écrire et sonne comme un devoir.

Je peux vous donner quelques indications.

Il suffit d'ouvrir le fichier, utilisez la méthode long length() de la classe File pour obtenir la taille et la méthode writeLong(long) de DataOutputStream pour envoyer la longueur au serveur. Il suffit ensuite de lire le fichier un bloc à la fois et d'utiliser la méthode write(byte[]) de DataOutputStream pour envoyer chaque bloc. Pour lire un fichier à la fois, vous devez simplement créer un FileInputStream et utiliser sa méthode int read(byte[]). Veillez à ne pas supposer que cette métode remplira tout le tampon, car il n'est pas garanti de le faire. Lisez les docs!

+0

Je vois. Avez-vous besoin de spécifier le chemin avant d'ouvrir le fichier? par ex. Fichier fichier = nouveau Fichier (nom de fichier), le nom de fichier doit-il avoir le chemin? parce que chaque fois que j'ai essayé de le faire, il ne s'ouvre pas .. –

+0

Cela dépend. Si vous ne spécifiez pas le chemin d'accès complet, alors il cherchera le fichier à partir du CWD (répertoire de travail actuel) qui est dans la plupart des cas le répertoire que vous utilisez actuellement avec votre terminal lorsque vous exécutez l'application de ligne de commande java . Le répertoire des fichiers .jar ou .class n'est pas pertinent, mais * peut être identique à CWD. – gd1

+0

Je suis en train de compiler et de courir à travers eclipse. et le fichier que je veux ouvrir est dans le même répertoire que les fichiers .java que j'écris. Ils sont dans le répertoire/src. en fait, tous les fichiers .class vont dans un répertoire différent appelé/bin. Je suppose que le fichier devrait être dans le répertoire courant, n'est-ce pas? ou ai-je tort? Merci beaucoup pour votre aide –

Questions connexes