2010-05-18 5 views
0

Je dois créer un code pour télécharger/télécharger un fichier sur une machine distante. Mais quand je télécharge le fichier, la nouvelle ligne n'est pas enregistrée aussi bien qu'elle insère automatiquement des caractères binaires. Aussi, je ne suis pas en mesure d'enregistrer le fichier dans son format actuel, je dois l'enregistrer en tant que "filename.ser". J'utilise le concept de sérialisation-désérialisation de Java.Téléchargement de fichier dans son format actuel

Merci d'avance.

+0

Merci à vous deux. Vos réponses sont utiles. Mais j'ai toujours quelques problèmes. Je ne peux télécharger que des fichiers texte avec succès. Lorsque j'essaie de faire la même chose pour un fichier de mots, il est complètement converti en un fichier binaire. Dans le fichier texte, lorsque je le télécharge, il ajoute lui-même des caractères binaires. Veuillez noter ici que je n'ai pas utilisé la sérialisation (ObjectInputStream/ObjectOutputStream). Pour votre référence bientôt, je vais vous montrer mon code. – RAS

+0

Voici mon code: private static void upload() throws IOException, Exception {Fichier upldfile = nouveau Fichier ((Chemin vers le PC distant) + "/testSer.txt"); FileOutputStream fos = nouveau FileOutputStream (upldfile); Fichier fichier = nouveau Fichier ("c: /test1.txt"); FileInputStream fis = nouveau FileInputStream (fichier); octet [] b = nouvel octet [(int) fichier.length()]; pour (int j = 0; j RAS

Répondre

1

Comment exactement transmettez-vous les fichiers? Si vous utilisez des implémentations de InputStream et OutputStream, ils fonctionnent au niveau octet par octet, vous devriez donc obtenir une sortie binaire égale. Si vous utilisez les implémentations Reader et Writer, ils convertissent les octets en caractères en fonction du mappage des caractères, puis effectuent le processus inverse lors de la sauvegarde. En fonction des encodages de plate-forme des différentes machines (et éventuellement d'autres effets si vous ne spécifiez pas explicitement le jeu de caractères), vous risquez de vous retrouver avec des différences dans le fichier binaire. Le fait que vous mentionniez newlines me fait penser que vous utilisez Readers pour envoyer des chaînes de caractères (et peut-être que vous réarrangez les chaînes vous-même en ajoutant manuellement des nouvelles lignes). Si vous voulez que les fichiers soient égaux en binaire, envoyez-les sous la forme d'un flux d'octets et stockez ce flux textuellement. Si vous voulez qu'ils soient égaux en tant que chaînes dans un jeu de caractères donné, utilisez Readers and Writers mais spécifiez le jeu de caractères explicitement. Si vous voulez qu'ils soient transmis en tant que chaînes dans l'ensemble par défaut de la plate-forme (pas très utile), alors acceptez qu'ils ne seront pas égaux binaires en tant que fichiers.


(Aussi, votre question ne fournit vraiment pas beaucoup d'informations pour le résoudre. Pour moi, il lit essentiellement «j'ai écrit un code pour faire X, et il ne fonctionne pas. Où est-ce que je me trompe "Vous semblez supposer que votre code est correct en ne l'inscrivant pas, mais en même temps reconnaître que ce n'est pas ...)

+1

+1. Il utilisait indubitablement 'BufferedReader # readLine()'. C'est celui qui coupe les nouvelles lignes. Vous ne voulez pas faire cela sur les fichiers ** binaires **. – BalusC

Questions connexes