Java: Téléchargez le fichier et enregistrez-le à l'emplacement sélectionné dans la boîte de dialogue [Utiliser HttpClient]

introduction

Au fait, j'ai décidé de mettre en œuvre les mouvements suivants dans l'application locale Java en entreprise.

  1. Ouvrez une boîte de dialogue pour sélectionner la destination d'enregistrement
  2. Enregistrez le fichier téléchargé depuis l'URL spécifiée vers la destination d'enregistrement sélectionnée C'est un processus qui semble assez courant, donc j'ai vérifié s'il y avait un article qui pouvait être utilisé tel quel ~~ Copier ~~, et j'ai découvert chaque processus tel que ʻOuvrir la boîte de dialogue et ʻTélécharger le fichier à partir de l'URL et enregistrer. Il y avait un article, mais je n'ai pas pu en trouver un complet. Comme c'est un gros problème, je l'ai écrit en combinaison.

Ci-dessous l'échantillon

pom.xml


<!--réduction-->
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.2</version>
    </dependency>
<!--réduction-->

DownloadSample.java


import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import javax.swing.JFileChooser;
import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class DownloadSample {
  //Télécharger l'URL de destination
  static String downloadUrl = "http://sample.com/hoge.txt";

  public static void main(String[] args) throws IOException {
    //Obtenez le nom de fichier par défaut à partir de l'URL.
    URL url = new URL(downloadUrl);
    String fileName = Paths.get(url.getPath()).getFileName().toString();

    //Afficher la boîte de dialogue d'enregistrement
    JFileChooser filechooser = new JFileChooser(fileName);
    //Spécifiez le nom de fichier par défaut
    filechooser.setSelectedFile(new File(fileName));
    //Afficher la boîte de dialogue d'enregistrement
    if (filechooser.showSaveDialog(null) != JFileChooser.APPROVE_OPTION) {
      //Quitter lorsque vous appuyez sur autre que "Enregistrer"
      return;
    }
    //Définir la destination d'enregistrement
    File saveFile = filechooser.getSelectedFile();
    try (
        //Définir HttpClient
        final CloseableHttpClient client = HttpClients.createDefault();
        // Get
        final CloseableHttpResponse response = client.execute(new HttpGet(downloadUrl))) {
      //Vérifiez l'état et enregistrez le fichier si la communication est réussie
      final int status = response.getStatusLine().getStatusCode();
      if (status >= 200 && status < 300) {
        final HttpEntity entity = response.getEntity();
        //Enregistrer le fichier
        Files.write(Paths.get(saveFile.toString()),
            entity == null ? new byte[0] : EntityUtils.toByteArray(entity));
      } else {
        throw new ClientProtocolException("Unexpected response status: " + status);
      }
    }
  }
}

C'est vraiment juste cet exemple, donc ce n'est peut-être pas nécessaire ... GitHub

Les références

Téléchargez et enregistrez le fichier [Java](en utilisant Apache HttpComponents HttpClient 4.5.2) → La plupart des communications Http et de l'enregistrement de fichiers ont été détournés de cet article. Je vous remercie! Afficher la boîte de dialogue "Enregistrer le fichier" Conseils d'utilisation pratique de JFileChooser → Je me suis référé à cet article pour savoir comment sélectionner la boîte de dialogue d'enregistrement. Je vous remercie! Comment utiliser java.net.URL et une petite note de NIO.2 → Je me suis référé à cet article pour le processus d'obtention du nom de fichier à partir de l'URL. Je vous remercie!

Recommended Posts

Java: Téléchargez le fichier et enregistrez-le à l'emplacement sélectionné dans la boîte de dialogue [Utiliser HttpClient]
Spécifiez l'emplacement Java dans eclipse.ini
Décompressez le fichier zip en Java
JSON en Java et Jackson Part ③ Incorporer JSON dans HTML et l'utiliser à partir de JavaScript
[Java] Comment utiliser la classe File
L'histoire de l'oubli de fermer un fichier en Java et de l'échec
Mémo: [Java] Si un fichier se trouve dans le répertoire surveillé, traitez-le.
[Java] Utiliser la technologie cryptographique avec les bibliothèques standard
Je souhaite télécharger un fichier sur Internet en utilisant Ruby et l'enregistrer localement (avec prudence)
[Java8] Recherchez le répertoire et récupérez le fichier
Est-il possible de mettre la bibliothèque (aar) dans la bibliothèque Android (aar) et de l'utiliser?
J'ai reçu les données du voyage (application agenda) en Java et j'ai essayé de les visualiser # 001
Comment compresser un fichier JAVA CSV et le gérer dans un tableau d'octets
Je ne me souviens pas de l'entrée / sortie du fichier texte en Java, alors je l'ai résumé.
Concernant les modificateurs transitoires et la sérialisation en Java
Capture et sauvegarde de l'installation de sélénium en Java
[Java] Lire les fichiers dans src / main / resources
Télécharger et télécharger des notes en java sur S3
[Développement Android] Obtenez des images du serveur avec Java et définissez-les dans ImageView! !!
[AWS Lambda] Redimensionner l'image enregistrée dans S3 et l'enregistrer dans un autre S3 (à l'aide de Ruby)
Comment enregistrer des fichiers avec l'extension spécifiée sous le répertoire spécifié en Java dans la liste
Écrivez ABNF en Java et transmettez l'adresse e-mail
Importez une instance et utilisez-la sur un autre écran
Ecrire une classe en Kotlin et l'appeler en Java
[Java] Récupère le fichier dans le fichier jar quel que soit l'environnement
Classes et instances Java comprises dans la figure
21 Lire et exécuter le script à partir du fichier
Utilisation correcte de la classe abstraite et de l'interface en Java
Comment écrire des commentaires dans le fichier de définition de schéma dans GraphQL Java et les refléter dans GraphiQL et GraphQL Playground
Utiliser OpenCV avec Java
Utiliser PreparedStatement en Java
Copiez et collez le contenu du fichier dans le conteneur Ubuntu Docker
JSON en Java et Jackson Partie 1 Renvoyer JSON à partir du serveur
Implémentez l'interface Java dans la classe JRuby et appelez-la depuis Java
Comment appeler et utiliser l'API en Java (Spring Boot)
Corrigez le code de caractère en Java et lisez à partir de l'URL
Raisons d'utiliser séparément Servlet et JSP dans le développement Java
Pensez aux différences entre les fonctions et les méthodes (en Java)
Obtenir des attributs et des valeurs à partir d'un fichier XML en Java
[Java] Utilisez ResolverStyle.LENIENT pour bien gérer la date et l'heure
[Rails] Obtenez access_token au moment de l'authentification Twitter avec Sorcery et enregistrez-le dans la base de données
Convertissez Excel en Blob avec java, enregistrez-le, lisez-le à partir de DB et exportez-le sous forme de fichier!
Représentez graphiquement les informations du capteur de Raspberry Pi en Java et vérifiez-les avec un navigateur Web