IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Comment écrire dans un fichier se trouvant sur un serveur distant


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 48
    Par défaut Comment écrire dans un fichier se trouvant sur un serveur distant
    Bonjour tout le monde
    J'aimerai écrire dans un fichier txt se trouvant sur mon serveur web. J'ai écrit un bout de code en java pour la lecture et écriture que voici:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
     public class Test {
     
        public static void main(String[] args) throws Exception  {
        	Test test=new Test();
        	test.read();
        	test.write();
        }
        private void read() throws Exception{
        	try 
            { 
        	URL myUrl = new URL("http://myDomain:8080/ContenusHTML/test.html");
            URLConnection yc = myUrl.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(
                                        yc.getInputStream()));
     
            String inputLine;
            while ((inputLine = in.readLine()) != null) 
                System.out.println(inputLine);
            in.close();
        }
        catch (FileNotFoundException e) 
        { 
        	// TODO Auto-generated catch block 
        	e.printStackTrace(); 
        } 
        catch (IOException e) 
        { 
        	// TODO Auto-generated catch block 
        	e.printStackTrace(); 
        } 
        }
     
        private void write() throws Exception{
        	try 
            { 
    	    	URL myUrl = new URL("http://myDomain:8080/ContenusHTML/test.html");
    	        URLConnection yc = myUrl.openConnection();
    	        BufferedWriter out = new BufferedWriter(new FileWriter(
                        "http://myDomain:8080/ContenusHTML/test.html"));
    	        out.write("bonjour"); 
    	        out.close();
            }
            catch (FileNotFoundException e) 
            { 
            	// TODO Auto-generated catch block 
            	e.printStackTrace(); 
            } 
            catch (IOException e) 
            { 
            	// TODO Auto-generated catch block 
            	e.printStackTrace(); 
            } 
     
        }
    }
    La méthode read fonctionne très bien car j'arrive à lire le contenu de mon fichier test.html. Mais pour ce qui est de l'écriture(méthode write), je galère et j'ai cette exception la plupart du temps:La syntaxe du nom de fichier, de répertoire ou de volume est incorrecte.
    Est ce que quelqu'un sait ce qui cloche et sinon y aurait il un exemple pour l'écriture dans un fichier distant en java?

    Je vais passer par un web service. Je vous tiens au courant du résultat

    Je vous remercie d'avance pour votre aide.

    Cordialement

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Un serveur http n'est pas fait pour écrire. Seulement pour lire.
    Pour mettre à jour un fichier html, il faut le fabriquer en local
    puis ensuite l'envoyer au serveur par FTP.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 48
    Par défaut
    Re bonjour et merci pour votre réponse.
    Bon alors j'ai changé de méthode. Je crée mon fichier directement en local(temporaire), le modifie si besoin. Ensuite j'aimerai chargé ce fichier dans mon serveur avant de le supprimer (en local)
    Je passe par un webService maintenant.

    Mon problème est au niveau de l'upload.
    J'ai testé pas mal de solutions internet, mais pour l'instant je n'y arrive toujours pas. La plupart c'est utilisé avec un serveur FTP. Je ne sais pas si c'est le fait que mon serveur soit de type http ou pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
     
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.util.Properties;
     
    import org.apache.commons.net.ftp.FTPClient;
    import org.apache.commons.net.ftp.FTPReply;
     
    public class uploadFile {
     
        static Properties props;
     
        public static void main(String[] args) {
     
        	HttpTest sendMyFiles = new HttpTest();
     
     
            String propertiesFile = "C://tmp/ftp.properties";
     
            String fileToFTP = "C://tmp/filee.txt";
            sendMyFiles.startFTP(propertiesFile, fileToFTP);
     
        }
     
        public boolean startFTP(String propertiesFilename, String fileToFTP){
     
        	System.out.println("hello");
            props = new Properties();
     
            try {
     
                props.load(new FileInputStream(propertiesFilename));
     
                String serverAddress = props.getProperty("http://fr-d455635:8080").trim();
                String userId = props.getProperty("user").trim();
                String password = props.getProperty("pass").trim();
                String remoteDirectory = props.getProperty("http://fr-d455635:8080/ContenusHtml/").trim();
                String localDirectory = props.getProperty("C://tmp/").trim();
     
                //new ftp client
                FTPClient ftp = new FTPClient();
                //try to connect
                ftp.connect(serverAddress);
                //login to server
                if(!ftp.login(userId, password))
                {
                    ftp.logout();
                    return false;
                }
                int reply = ftp.getReplyCode();
                //FTPReply stores a set of constants for FTP reply codes. 
                if (!FTPReply.isPositiveCompletion(reply))
                {
                    ftp.disconnect();
                    return false;
                }
     
                //enter passive mode
                ftp.enterLocalPassiveMode();
                //get system name
                System.out.println("Remote system is " + ftp.getSystemType());
                //change current directory
                ftp.changeWorkingDirectory(remoteDirectory);
                System.out.println("Current directory is " + ftp.printWorkingDirectory());
     
                //get input stream
                InputStream input;
                input = new FileInputStream(localDirectory + "/" + fileToFTP);
                //store the file in the remote server
                ftp.storeFile(fileToFTP, input);
                //close the stream
                input.close();
     
                ftp.logout();
                ftp.disconnect();
            }
            catch (Exception ex)
            {
                ex.printStackTrace();
                return false;
            }
            return true;
        }
     
    }
     
    /*
    #Properties File FTP to server
    serverAddress=http://fr-d455635:8080/
    userId=user   
    password=pass
    remoteDirectory=http://fr-d455635:8080/ContenusHTML/
    localDirectory=C://tmp/
    */
    Quand j'intégre ce bout de code dans mon web service. J'ai cette erreur de mon tomcat: error 406: La ressource identifiée par cette requête n''est capable de générer des réponses qu''avec des caractéristiques incompatible avec la directive "accept" présente dans l''entête de requête.

    Quand je teste comme une classe java, j'ai une exception NullPointerException à cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String serverAddress = props.getProperty("http://fr-d455635:8080").trim();
    Voici les paramètres qui ne changent pas en général:
    host=http://fr-d154636:8080
    user=myUser
    pass=myPass
    file= C://tmp/filee.txt

    Si quelqu'un à un bout d'exemple pour tester, je ne dis pas non.

    Merci d'avance
    Fichiers attachés Fichiers attachés

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String remoteDirectory = props.getProperty("http://fr-d455635:8080/ContenusHtml/").trim();
    ... ne fonctionnera pas

    La connexion FTP se fait vers un serveur FTP ! pas un serveur HTTP
    Le serveur FTP et le serveur HTTP pointent vers le même Directory
    HTTP sert à lire
    FTP à déposer les fichiers html (à lire aussi mais bon ...)

    Le "host" de ton FTP est certainement différent de celui du HTTP

    Normalement, après connexion à ton compte FTP tu es directement dans le Directory qui contient les fichiers à mettre à jour (fait un essai avec un client FTP genre FileZila)
    et donc tu ne devrais pas avoir à faire un remoteDirectory
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    Accessoirement, il y a là deux problèmes : l'upload et les Properties.

    Cette discussion concerne l'upload. On ne va pas parler des Properties, alors maintenant, quand un exemple sera donné, il n'utilisera pas Properties.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 48
    Par défaut
    Oui je veux bien un exemple sans les properties, ça m'arrangerait même

    Merci d'avance

Discussions similaires

  1. [C#2.0] Comment écrire dans un fichier sur un serveur ?
    Par meli0207 dans le forum Contribuez
    Réponses: 6
    Dernier message: 27/06/2006, 15h57
  2. Réponses: 32
    Dernier message: 17/05/2006, 17h03
  3. [C#] Comment écrire dans un fichier ?
    Par guillaume16 dans le forum C#
    Réponses: 9
    Dernier message: 30/03/2006, 14h39
  4. [JAR] Comment écrire dans un fichier properties dans un jar
    Par Alec6 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 05/10/2004, 16h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo