2011-11-30 18 views
52

Necesito crear un objeto File del objeto URL Mi requisito es necesito para crear un objeto de archivo de imagen de una trama de (digamos googles logo)Cómo crear objeto de archivo de objeto URL

URL url = new URL("http://google.com/pathtoaimage.jpg"); 
File f = create image from url object 
+0

Podría elaborar? ¿Qué estás intentando lograr? – MByD

+0

También recomendaría ver [esta pregunta] (http://stackoverflow.com/questions/921262/how-to-download-and-save-a-file-from-internet-using-java) y comprobar si hace el trabajo por usted – MByD

Respuesta

72

Uso Apache Common IO's FileUtils:

import org.apache.commons.io.FileUtils 

FileUtils.copyURLToFile(url, f); 

El método de descarga el contenido del url y lo guarda en f.

+12

Esto funcionó para mí: 'URL url = new URL (" http://www.mydomain.com/pathToFile/fileName.pdf "); String tDir = System.getProperty ("java.io.tmpdir"); String path = tDir + "tmp" + ".pdf"; file = new File (path); file.deleteOnExit(); FileUtils.copyURLToFile (url, archivo); ' –

+0

@AdrienBe' FileUtils' obtiene un error en Eclipse, no muestra una importación. –

+1

'import org.apache.commons.io.FileUtils' debe hacer el trabajo, ver el enlace a la biblioteca en la respuesta –

12

En para crear un archivo desde una URL HTTP es necesario descargar el contenido de la URL:

URL url = new URL("http://www.google.ro/logos/2011/twain11-hp-bg.jpg"); 
URLConnection connection = url.openConnection(); 
InputStream in = connection.getInputStream(); 
FileOutputStream fos = new FileOutputStream(new File("downloaded.jpg")); 
byte[] buf = new byte[512]; 
while (true) { 
    int len = in.read(buf); 
    if (len == -1) { 
     break; 
    } 
    fos.write(buf, 0, len); 
} 
in.close(); 
fos.flush(); 
fos.close(); 

el archivo descargado se encuentra en la raíz de su proyecto: {proyecto} /downloaded.jpg

16

Puede usar ImageIO para cargar la imagen desde una URL y luego escribirla en un archivo. Algo como esto:

URL url = new URL("http://google.com/pathtoaimage.jpg"); 
BufferedImage img = ImageIO.read(url); 
File file = new File("downloaded.jpg"); 
ImageIO.write(img, "jpg", file); 

Esto también le permite convertir la imagen a otro formato si es necesario.

+0

¿Hay alguna forma de crear un objeto de archivo desde BufferedImage sin escribirlo en el disco? – nidhin

+1

Por definición, un archivo debe almacenarse en algún sistema de archivos. Necesitará algún sistema de archivos en memoria para terminar con un archivo que no se conserva. –

+0

¿Notaste la respuesta aceptada? no sé FileUitls si crea un archivo temporal para eso: P – nidhin

1
import java.net.*; 
import java.io.*; 
class getsize { 
    public static void main(String args[]) throws Exception { 
     URL url=new URL("http://www.supportyourpm.in/jatin.txt"); //Reading 
     URLConnection yc = url.openConnection(); 
     BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream())); 
     String inputLine; 
     while ((inputLine = in.readLine()) != null) 
      System.out.println(inputLine); 
     in.close(); 

     //Getting size 
     HttpURLConnection conn = null; 
     conn = (HttpURLConnection) url.openConnection(); 
     conn.setRequestMethod("HEAD"); 
     conn.getInputStream(); 
     System.out.println("Length : "+conn.getContentLength()); 
    } 
} 
+2

¿Podría formatear este código? La sangría está por todos lados. Y por favor agregue alguna explicación de lo que el código está haciendo y cómo resuelve la pregunta. Las respuestas de solo código se eliminan con frecuencia. – Kenster

9
URL url = new URL("http://google.com/pathtoaimage.jpg"); 
File f = new File(url.getFile()); 
+4

Al usar este método para archivos locales del sistema de archivos que tienen un espacio en la ruta completa,% 20 no se convertirá automáticamente en espacio y puede causar una excepción – Asu

4

Desde Java 7

File file = Paths.get(url.toURI()).toFile(); 
Cuestiones relacionadas