Java - Problema al copiar un fichero de un directorio a otro

   
Vista:

Problema al copiar un fichero de un directorio a otro

Publicado por Zhukov (11 intervenciones) el 21/03/2012 13:10:35
Buenos dias

Tras revisarlo mil veces, finalmente me he decidido a postear aquí a ver si alguno de vosotros ve algo que yo ya por tozudez soy incapaz.

El problema viene dado en mi opinión por algún tipo de conflicto con los permisos de windows espero que la información que os proporciono a continuación sirva de ayuda para solventar el problema.

Gracias a todos.

El error dado es el siguiente:

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
java.io.FileNotFoundException: C:\pruebas (Acceso denegado)
	at java.io.FileOutputStream.open(Native Method)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:212)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:165)
	at Negocio.ControladorFicheros.guardar2(ControladorFicheros.java:401)
	at Vista.VPrincipal.VbtnGuardarActionPerformed(VPrincipal.java:215)
	at Vista.VPrincipal.access$200(VPrincipal.java:22)
	at Vista.VPrincipal$4.actionPerformed(VPrincipal.java:110)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6504)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6269)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4860)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4686)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2713)
	at java.awt.Component.dispatchEvent(Component.java:4686)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:680)
	at java.awt.EventQueue$4.run(EventQueue.java:678)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)


El codigo que lo provoca es el de la siguiente función:

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
public void guardar() throws IOException {
        File origen = new File ("C:/prueba.png");
        File destino = new File ("C:/pruebas");
 
        System.out.println(origen.getPath());
        System.out.println("origen.exists()->" + origen.exists());
        System.out.println("origen.canWrite-> " + origen.canWrite());
        System.out.println("origen.canExecute-> " + origen.canExecute());
        System.out.println("origen.canRead-> " + origen.canRead());
        System.out.println();
 
        System.out.println(destino.getPath());
        System.out.println("destino.exists()->" + destino.exists());
        System.out.println("destino.canWrite-> " + destino.canWrite());
        System.out.println("destino.canExecute-> " + destino.canExecute());
        System.out.println("destino.canRead-> " + destino.canRead());
 
 
        if(!destino.exists()) {
            destino.createNewFile();
        }
        FileChannel entrada = null;
        FileChannel salida = null;
        try {
            entrada = new FileInputStream(origen).getChannel();
            salida = new FileOutputStream(destino).getChannel();
            salida.transferFrom(entrada,0, entrada.size());
        }
        finally {
            if(entrada != null) {
                entrada.close();
            }
            if(salida != null) {
                salida.close();
            }
        }
    }



Como podeis ver, realizo una traza al inicio (en el que el resultado es óptimo ya que los permisos son correctos aunque el resultado final no lo es ya que salta la excepción)

1
2
3
4
5
6
7
8
9
10
11
C:\prueba.png
origen.exists()->true
origen.canWrite-> true
origen.canExecute-> true
origen.canRead-> true
 
C:\pruebas
destino.exists()->true
destino.canWrite-> true
destino.canExecute-> true
destino.canRead-> true



Como siempre gracias a todos por la ayuda prestada

Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema al copiar un fichero de un directorio a otro

Publicado por Zhukov (11 intervenciones) el 21/03/2012 15:01:12
Me respondo a mi mismo.

Como suele pasar, hay veces que uno se obceca y dejando pasar un rato ve cosas donde antes no. Ésta ha sido una de esas ocasiones.

El problema ha sido que en destino se me ha ido la cabeza y lo he introducido el directorio al que quiero copiar el archivo pero no el archivo como tal, es decir:

Esta linea ---> File destino = new File ("C:/pruebas");

hay que sustituirla por algo del estilo a --->File destino = new File ("C:/pruebas/archivo.ext");

con eso se realiza la copia sin ningún problema.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Problema al copiar un fichero de un directorio a otro

Publicado por Rachel (1 intervención) el 23/01/2013 03:39:34
Muchas gracias me sirvio de mucho
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Problema al copiar un fichero de un directorio a otro

Publicado por Julian Jimenez (1 intervención) el 16/05/2013 17:51:50
Alabado seas Compañero!
me has sacado de un lío, es cuestion de analisis y una ayuda como la tuya!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al copiar un fichero de un directorio a otro

Publicado por MARCO marrcomr@hotmail.com (1 intervención) el 05/04/2014 21:48:57
GRACIAS, TENIA EL MISMO PROBLEMA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al copiar un fichero de un directorio a otro

Publicado por IRWIN (2 intervenciones) el 17/04/2014 03:04:36
Hola akavo de usar tus codigo pero la verdad que he modifcado lo que dices pero sale error....alguna ayudaa...

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
package copiandoarchivos;
 
import java.io.*;
import java.nio.channels.FileChannel;
 
/**
 *
 * @author Irwin
 */
public class guardar {
 
 
     public void guardar() throws IOException {
     //   File origen = new File ("C:/prueba.png");
 
           File origen = new File ("C:/carpetaorigen/PRUEBA/BIANKCV.docx");
        File destino = new File ("D:/CARPETADEDESTINO2/");
 
        System.out.println(origen.getPath());
        System.out.println("origen.exists()->" + origen.exists());
        System.out.println("origen.canWrite-> " + origen.canWrite());
        System.out.println("origen.canExecute-> " + origen.canExecute());
        System.out.println("origen.canRead-> " + origen.canRead());
        System.out.println();
 
        System.out.println(destino.getPath());
        System.out.println("destino.exists()->" + destino.exists());
        System.out.println("destino.canWrite-> " + destino.canWrite());
        System.out.println("destino.canExecute-> " + destino.canExecute());
        System.out.println("destino.canRead-> " + destino.canRead());
 
 
        if(!destino.exists()) {
            destino.createNewFile();
        }
        FileChannel entrada = null;
        FileChannel salida = null;
        try {
            entrada = new FileInputStream(origen).getChannel();
            salida = new FileOutputStream(destino).getChannel();
            salida.transferFrom(entrada,0, entrada.size());
        }
        finally {
            if(entrada != null) {
                entrada.close();
            }
            if(salida != null) {
                salida.close();
            }
        }
    }
 
     public static void main(String args[]) throws IOException{
        guardar a = new guardar();
        a.guardar();
 
     }
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al copiar un fichero de un directorio a otro

Publicado por IRWIN (2 intervenciones) el 17/04/2014 03:07:34
y el erro que me sale es el siguiente


C:\carpetaorigen\PRUEBA\BIANKCV.docx
origen.exists()->true
origen.canWrite-> true
origen.canExecute-> true
origen.canRead-> true

D:\CARPETADEDESTINO2
destino.exists()->true
destino.canWrite-> true
destino.canExecute-> true
destino.canRead-> true
Exception in thread "main" java.io.FileNotFoundException: D:\CARPETADEDESTINO2 (Acceso denegado)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
at java.io.FileOutputStream.<init>(FileOutputStream.java:171)
at copiandoarchivos.guardar.guardar(guardar.java:46)
at copiandoarchivos.guardar.main(guardar.java:61)
Java Result: 1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al copiar un fichero de un directorio a otro

Publicado por belar (1 intervención) el 30/06/2014 22:05:05
amigo ese error ya esta resuelto y es por que tienes que ponerle nombre al archivo que pretendes copiar y agregarlo al path de destino ej:

File destino = new File ("D:/CARPETADEDESTINO2/NOMBREaRCHIVO.TXT")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al copiar un fichero de un directorio a otro

Publicado por Sandra (1 intervención) el 24/04/2015 18:08:33
Por favor alguien me puede ayudar deseo copiar un archivo de fuente a la carpeta /windows/fonts pero me sale el error Acceso Denegado y elcodigo esta igual al del ejemplo anterior..
les agradeceria si me ayudan con la solucion..
Gracias..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar