2012-03-11 18 views
16

Quiero crear un archivo en un nuevo directorio utilizando la ruta relativa. Crear el directorio "tmp" es bastante fácil.Java - Cómo crear un archivo en un directorio utilizando la ruta relativa

Sin embargo, cuando creo el archivo, solo se encuentra en el directorio actual, no en el nuevo. La línea de código está debajo.

File tempfile = new File("tempfile.txt"); 

ha intentado esto también:

File tempfile = new File("\\user.dir\\tmp\\tempfile.txt"); 

Claramente estoy malentendido cómo funciona este método. Su ayuda es muy apreciada.

EDITAR: agregué la línea de código utilizada actualmente, así como la que creo que podría funcionar para una ruta relativa para despejar la confusión.

+1

El código anterior utiliza una ruta absoluta: '\ user.dir \ tmp \ tempfile.txt'. No veo cómo se podría crear este archivo en el directorio actual. Publique el código correspondiente, explíquenos qué espera que haga, y qué hace en su lugar. –

+1

* ".. usando la ruta relativa." * ¿En relación a qué? ¿La aplicación? El paquete de la clase? ¿El observador relativista? Tenga en cuenta que a) Eso es un constructor, no un método. b) 'user.dir' no se expandirá automáticamente. c) La programación por magia rara vez funciona, intente leer la documentación. –

Respuesta

23
File dir = new File("tmp/test"); 
dir.mkdirs(); 
File tmp = new File(dir, "tmp.txt"); 
tmp.createNewFile(); 

Por cierto: Para el uso de pruebas @Rule y la clase TemporaryFolder para crear archivos temporales o carpetas

+0

¡Eso lo hizo! Gracias, habría tomado un par de horas descubrir que necesitaba dos nuevas declaraciones de archivo separadas. –

+3

Como un aviso (para que usted no lo sepa) pero Sun, er Oracle, tiene muy buenos documentos de API. Una vez que aprendes a entenderlos y navegarlos, pueden ser un gran ahorro de tiempo. Por ejemplo, la solución a su problema específico podría haberse resuelto si hubiera examinado los distintos constructores disponibles para los usuarios de la clase File: http://docs.oracle.com/javase/6/docs/api/java/io/File.html – claymore1977

4

Puede crear rutas relativas a un directorio con los constructores que toman dos argumentos: http://docs.oracle.com/javase/6/docs/api/java/io/File.html

Por ejemplo:

File tempfile = new File("user.dir/tmp", "tempfile.txt"); 

Por cierto, la barra invertida "\" sólo se puede utilizar en Windows . En casi todos los casos puede usar la barra inclinada portátil "/".

+5

¿Qué pasó con 'File.separator'? – Manish

+1

* "En casi todos los casos, debe usar la barra inclinada portátil" /"."* En *** cada *** caja, debe usar el constructor 'File' que acepta' File' (parent) & 'String '(nombre de archivo) o use' System.getProperty ("file.separator") '. –

+0

@Manish Debe ser en minúsculas. –

2
String routePath = this.getClass().getClassLoader().getResource(File.separator).getPath(); 
System.out.println(routePath); 

/*for finding the path*/ 
String newLine = System.getProperty("line.separator"); 
BufferedWriter bw = new BufferedWriter(new FileWriter(new File(routePath+File.separator+".."+File.separator+"backup.txt"), true)); 
/*file name is backup.txt and this is working.*/ 
0

Digamos que usted tiene "Local-almacenamiento" en su carpeta del proyecto y que desea poner un texto o cualquier archivo usando el archivo escriba.

File file = new File(dir,fileName); //KEY IS DIR ex."./local-storage/" and fileName='comp.html' 

     // if file doesnt exists, then create it 
     if (! file.exists()) 
     { 
      file.createNewFile(); 
     } 

     FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
     BufferedWriter bw = new BufferedWriter(fw); 
     bw.write(text); 
Cuestiones relacionadas