简介
我正在做一些作业,负责执行一个使用路径(绝对)管理文件的程序。读取文件信息,写入/读取文件等。
我的尝试
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package fichersapren;
import java.io.Closeable;
import java.io.File;
import java.io.IOException;
import java.util.Calendar;
/**
*
* @author alumneM
*/
public class FitxersApren {
public static String working_path = "";
public static Calendar cal;
/**
* Get username from system
*/
public static void obtenirNomUsuari()
{
System.out.println(System.getProperty("user.name"));
}
/**
* Create file
*
* @param path
* @throws IOException
*/
public static void crearFicher(String path) throws IOException
{
File cf = new File(path);
cf.createNewFile();
}
/**
* Create Directory
*
* @param path
*/
public static void crearDirectori(String path)
{
File cd = new File(path);
cd.mkdir();
}
/**
* Get file info
*
* @param path
*/
public static void mostrarInfoFitcher(String path)
{
File infoF = new File(path);
System.out.println("Nombre fichero: " + infoF.getName());
System.out.println("Permisos: ");
System.out.println(" - Escritura: " + infoF.canWrite() + " ");
System.out.println(" - Lectura: " + infoF.canRead() + " ");
System.out.println(" - Ejecucion: " + infoF.canExecute() + " ");
System.out.println("Ruta: " + infoF.getAbsolutePath() + " ");
System.out.println("Tamaño: " + infoF.length() + " ");
//cal.setTimeInMillis(infoF.lastModified());
//System.out.println("Fecha: " + cal.get(Calendar.YEAR));
}
/**
* Get directory info
*
* @param path
*/
public static void mostrarInfoDirectori(String path)
{
File infoD = new File(path);
System.out.println("Nombre directorio: " + infoD.getName());
System.out.println("Permisos: ");
System.out.println(" - Escritura: " + infoD.canWrite() + " ");
System.out.println(" - Lectura: " + infoD.canRead() + " ");
System.out.println(" - Ejecucion: " + infoD.canExecute() + " ");
System.out.println("Ruta: " + infoD.getAbsolutePath() + " ");
System.out.println("Tamaño: " + infoD.length() + " ");
//cal.setTimeInMillis(infoD.lastModified());
//System.out.println("Fecha: " + cal.get(Calendar.YEAR));
}
/**
* Delete dile
*
* @param path
*/
public static void esborrarFitxer(String path)
{
File file_del = new File(path);
file_del.delete();
// closeMe(file_del);
}
/**
* Delete directory
*
* @param path
*/
public static void esborrarDirectori(String path)
{
File dir_del = new File(path);
dir_del.delete();
//closeMe(dir_del);
}
/**
* Change file name
*
* @param path
* @param nom
*/
public static void canviarNom(String path, String nom)
{
File nom_file = new File(path);
}
/**
* My try at a general method to close File classes
*
* @param path
*/
public static void closeMe(Closeable path)
{
try
{
path.close();
}
catch (Exception e)
{
System.out.println("Could not be closed");
}
}
/**
* Main method
*
* @param args the command line arguments
*/
public static void main(String[] args) {
mostrarInfoFitcher("C:\\Users\\alumneM\\Desktop\\bitcoin.txt");
mostrarInfoFitcher("C:\\Users\\alumneM\\Desktop\\bitcoin.docx");
}
}
问题
在这些方法中具有所有这些File类,这使我相信它效率不高。肯定还有其他更好,更专业的东西。
下面是我遇到的第一个问题,当不使用每个方法上的File类变量时会发生什么?它会消耗资源吗?如何关闭它?
2.1在第二个问题之后,我可以简单地对这些变量使用.close()方法,但我不明白为什么。
我要在这个问题中寻找什么?
注释
目标
我想制作一个Java程序,在其中输入文件的路径,然后可以在其上应用这些方法。
答案 0 :(得分:1)
在您的主文件或声明新文件的地方,都可以执行以下操作来创建文件并调用方法:
String path = "/example";
File file = new File(path);
esborrarDirectori(file);
如果让每种方法都使用File作为参数,例如,一个将如下所示:
public static void esborrarDirectori(File file)
{
file.delete();
}
如果您要对文件执行其他操作,还可以使用自己的方法创建返回文件:
public static File createFile(String path) {
File file = new File(path);
return file;
}
可以通过以下方式使用它:
String path = "/example";
File file = createFile(path);
除非您打算向createFile()方法添加一些其他功能,否则这没有什么用。
通常,为了良好实践,除非您实际上正在打开新文件,否则不应创建新的File
。如果您多次使用相同的File
,则应创建一次,然后将其发送给需要使用的方法。