- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
简介
我正在做一些作业,我的任务是编写一个使用路径(绝对)管理文件的程序。读取文件信息、写入/读取它们等。
我的尝试
/*
* 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 程序,我可以在其中输入一个文件的路径,然后我可以在上面应用这些方法。
最佳答案
在您的 main 或任何您声明新文件的地方,您可以这样做来创建文件并调用方法:
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
,您应该创建它一次,然后将它发送给需要使用它的方法。
关于java - 如何避免这种冗余并关闭未使用的文件类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56131737/
我们已经有一个使用 AnyEvent 的库。它在内部使用 AnyEvent,并最终返回一个值(同步 - 不使用回调)。有什么方法可以将这个库与 Mojolicious 一起使用吗? 它的作用如下: #
我想从 XSD 文件生成带有 JAXB 的 Java 类。 问题是,我总是得到一些像这样的类(删除了命名空间): public static class Action { @X
我有一个关于 html 输入标签或 primefaces p:input 的问题。为什么光标总是自动跳转到输入字段。我的页面高度很高,因此您需要向下滚动。输入字段位于页面末尾,光标自动跳转(加载)到页
我今天在考虑面向对象设计,我想知道是否应该避免 if 语句。我的想法是,在任何需要 if 语句的情况下,您都可以简单地创建两个实现相同方法的对象。这两个方法实现只是原始 if 语句的两个可能的分支。
String graphNameUsed = graphName.getName(); if (graphType.equals("All") || graphType.equals(
我有一张友谊 table CREATE TABLE IF NOT EXISTS `friendList` ( `id` int(10) NOT NULL, `id_friend` int(10
上下文 Debian 64。Core 2 二人组。 摆弄循环。我使用了同一循环的不同变体,但我希望尽可能避免条件分支。 但是,即使我认为它也很难被击败。 我考虑过 SSE 或位移位,但它仍然需要跳转(
我最近在 Java 中创建了一个方法来获取字符串的排列,但是当字符串太长时它会抛出这个错误:java.lang.OutOfMemoryError: Java heap space我确信该方法是有效的,
我正在使用 (C++) 库,其中需要使用流初始化对象。库提供的示例代码使用此代码: // Declare the input stream HfstInputStream *in = NULL; tr
我有一个 SQL 查询,我在 WHERE 子句中使用子查询。然后我需要再次使用相同的子查询将其与不同的列进行比较。 我假设没有办法在子查询之外访问“emp_education_list li”? 我猜
我了解到在 GUI 线程上不允许进行网络操作。对我来说还可以。但是为什么在 Dialog 按钮点击回调上使用这段代码仍然会产生 NetworkOnMainThreadException ? new T
有没有办法避免在函数重定向中使用 if 和硬编码字符串,想法是接收一个字符串并调用适当的函数,可能使用模板/元编程.. #include #include void account() {
我正在尝试避免客户端出现 TIME_WAIT。我连接然后设置 O_NONBLOCK 和 SO_REUSEADDR。我调用 read 直到它返回 0。当 read 返回 0 时,errno 也为 0。我
我正在开发 C++ Qt 应用程序。为了在应用程序或其连接的设备出现故障时帮助用户,程序导出所有内部设置并将它们存储在一个普通文件(目前为 csv)中。然后将此文件发送到公司(例如通过邮件)。 为避免
我有一组具有公共(public)父类(super class)的 POJO。这些存储在 superclass 类型的二维数组中。现在,我想从数组中获取一个对象并使用子类 的方法。这意味着我必须将它们转
在我的代码中,当 List 为 null 时,我通常使用这种方法来避免 for 语句中的 NullPointerException: if (myList != null && myList.size
我正在尝试避免客户端出现 TIME_WAIT。我连接然后设置 O_NONBLOCK 和 SO_REUSEADDR。我调用 read 直到它返回 0。当 read 返回 0 时,errno 也为 0。我
在不支持异常的语言和/或库中,许多/几乎所有函数都会返回一个值,指示其操作成功或失败 - 最著名的例子可能是 UN*X 系统调用,例如 open( ) 或 chdir(),或一些 libc 函数。 无
我尝试按值提取行。 col1 df$col1[col1 == "A"] [1] "A" NA 当然我只想要“A”。如何避免 R 选择 NA 值?顺便说一句,我认为这种行为非常危险,因为很多人都会陷入
我想将两个向量合并到一个数据集中,并将其与函数 mutate 集成为 5 个新列到现有数据集中。这是我的示例代码: vector1% rowwise()%>% mutate(vector2|>
我是一名优秀的程序员,十分优秀!