Comment télécharger un fichier depuis un programme

Résolu/Fermé
TheKill_TnT Messages postés 148 Date d'inscription lundi 15 mai 2017 Statut Membre Dernière intervention 22 juin 2019 - 19 mai 2018 à 18:21
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 20 mai 2018 à 22:02
Bonjour,

Je faisais comme ça un petit programme Java de memory, et au collège pendant le club phy/chimie/informatique, je codais un peu sur un ide en ligne, j'avais fais un petit programme marrant bon voilà quoi, et le prof m'a demandé si j'avais déjà codé d'autres plus gros projets et blabla, donc je me suis dit "Ok, si je garde le Memory sur mon dossier personnel du serveur du collège, ça devrais aller" mais là je me dis "pourquoi ne pas faire une mise à jour automatique ?", donc je m'y suis mis...

Mais c'est galère, je ne sait pas comment dire à mon programme de chercher le fichier sur mon site et de le télécharger :/
J'ai tenter un URI dans le chemin du fichier mais "sheme" ne serait pas "file"...

Si quelqu'un pouvais m'aider ça serait super :D

A voir également:

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
19 mai 2018 à 18:53
Bonjour,

Je n'ai pas bien compris dans quel sens tu veux faire ta "mise à jour".
Tu as un programme qui tourne (où ?) et qui devrait mettre à jour (quoi ?) à partir d'un site web ?

Pour télécharger un fichier tu dois pouvoir faire comme ceci :

import java.io.IOException;
import java.net.URL;
import java.nio.file.*;

public class Test {
    public static void main(String args[]) throws IOException {
        Files.copy(
            new URL("http://monSite/monFichier").openStream(),
            Paths.get("C:/monFichier"),
            StandardCopyOption.REPLACE_EXISTING);
    }
}

Voir la documentation : public static long copy​(InputStream in, Path target, CopyOption... options)

Remarque : "si je garde le Memory sur mon dossier personnel du serveur du collège, ça devrais aller"
Tu risques de le perdre tôt ou tard. Il vaudrait mieux stocker ton code sur un site dédié (Gitlab par exemple).
1
TheKill_TnT Messages postés 148 Date d'inscription lundi 15 mai 2017 Statut Membre Dernière intervention 22 juin 2019 32
19 mai 2018 à 19:01
Nen mais tout le code l'IDE ect est géré sur mon PC chez moi et c'est justement ça: J'aimerais que dès que depuis chez moi je change le code (et donc le programme dans mon site), quand je reviens au collège et que je le démarre mon programme depuis le collège ça cherche la mise à jour sur mon site, et ça remplace le fichier au collège par celui de mon site...

D'impression le code que tu m'as envoyé me parait plus ou moins adapté justement à ce que je cherche à faire, j'éssaye et je t'en dis des nouvelles
0
TheKill_TnT Messages postés 148 Date d'inscription lundi 15 mai 2017 Statut Membre Dernière intervention 22 juin 2019 32
19 mai 2018 à 20:00
Connection refusée
Jusque là, je pense savoir pourquoi: j'héberge le site web sur mon PC. Je vais essayer un accès via Localhost...
0
TheKill_TnT Messages postés 148 Date d'inscription lundi 15 mai 2017 Statut Membre Dernière intervention 22 juin 2019 32
19 mai 2018 à 20:23
mai 19, 2018 8:22:25 PM memory.start main
GRAVE: null
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
at sun.net.www.http.HttpClient.New(HttpClient.java:339)
at sun.net.www.http.HttpClient.New(HttpClient.java:357)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1220)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:984)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
at java.net.URL.openStream(URL.java:1045)
at memory.update.installUpdate(update.java:92)
at memory.start.main(start.java:36)


(Et un System.exit(?); intégré au report de l'érreur ce qui empêche le programme de continuer)
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015 > TheKill_TnT Messages postés 148 Date d'inscription lundi 15 mai 2017 Statut Membre Dernière intervention 22 juin 2019
19 mai 2018 à 20:59
Si tu héberges ton site uniquement en localhost tu ne pourras pas y accéder depuis ton collège...
Cependant sur ta machine ça devrait fonctionner, j'ai fait le test chez moi
"http://localhost:8080/site/fichier"
ok.

Je parlais de Gitlab tout à l'heure. C'est le genre de site qui pourrait te permettre de mettre en ligne ton fichier et sur lequel ton programme pourrait se connecter pour se mettre à jour, même si ton site perso n'est pas disponible.

Remarque : fermer le programme si la mise à jour échoue c'est un peu violent. Je pense que tu devrais laisser le programme s'exécuter normalement après, au pire ce sera avec la version non à jour du fichier...
0
TheKill_TnT Messages postés 148 Date d'inscription lundi 15 mai 2017 Statut Membre Dernière intervention 22 juin 2019 32
19 mai 2018 à 21:53
"fermer le programme si la mise à jour échoue c'est un peu violent"
C'est pas moi qui mets un System.exit !
"Je parlais de Gitlab tout à l'heure. C'est le genre de site qui pourrait te permettre de mettre en ligne ton fichier et sur lequel ton programme pourrait se connecter pour se mettre à jour, même si ton site perso n'est pas disponible. " Ah ! Interessant. Pour le localhost en fait c'était déjà en localhost, mais ce n'est pas grave.
Cherchant un cloud qui offre un lien fixe pour la mise à jour de fichier, ta proposition de Gitlab me parrait interressante^^
0
TheKill_TnT Messages postés 148 Date d'inscription lundi 15 mai 2017 Statut Membre Dernière intervention 22 juin 2019 32
19 mai 2018 à 21:05
Résolu. Merci à KX.
0