做网站各个流程,一元云购手机网站建设,织梦做公司网站要钱吗,网站建设龙头企业Java 文件
Java IO教程 - Java文件 File类的对象是文件或目录的路径名的抽象表示。
创建文件
我们可以从中创建一个 File 对象
路径名父路径名和子路径名URI#xff08;统一资源标识符#xff09;
我们可以使用File类的以下构造函数之一创建一个文件#xff1a;
File(…Java 文件
Java IO教程 - Java文件 File类的对象是文件或目录的路径名的抽象表示。
创建文件
我们可以从中创建一个 File 对象
路径名父路径名和子路径名URI统一资源标识符
我们可以使用File类的以下构造函数之一创建一个文件
File(String pathname)
File(File parent, String child)
File(String parent, String child)
File(URI uri)如果我们有一个文件路径名字符串test.txt我们可以创建一个抽象路径名作为下面的代码。
File dummyFile new File(test.txt);名为test.txt的文件不必存在以使用此语句创建File对象。
dummyFile对象表示抽象路径名它可能指向或可能不指向文件系统中的真实文件。
File类有几个方法来处理文件和目录。
使用File对象我们可以创建新文件删除现有文件重命名文件更改文件的权限等。
File类中的isFile()和isDirectory()告诉File对象是否表示文件或目录。 当前工作目录
JVM的当前工作目录是根据我们如何运行java命令来设置的。
我们可以通过读取user.dir系统属性来获取JVM的当前工作目录如下所示
String workingDir System.getProperty(user.dir);使用System.setProperty()方法更改当前工作目录。
System.setProperty(user.dir, C:\\myDir);要在Windows上指定C:\\ test作为user.dir系统属性值我们运行如下所示的程序
java -Duser.dirC:\test your-java-class文件的存在
我们可以使用File类的exists()方法检查File对象的抽象路径名是否存在。
boolean fileExists dummyFile.exists();完整源代码
import java.io.File;public class Main {public static void main(String[] argv) {// Create a File objectFile dummyFile new File(dummy.txt);// Check for the files existenceboolean fileExists dummyFile.exists();if (fileExists) {System.out.println(The dummy.txt file exists.);} else {System.out.println(The dummy.txt file does not exist.);}}
}上面的代码生成以下结果。 路径
绝对路径在文件系统上唯一标识文件。规范路径是唯一标识文件系统上文件的最简单路径。
我们可以使用getAbsolutePath()和getCanonicalPath()方法来分别获得由File对象表示的绝对路径和规范路径。
import java.io.File;
import java.io.IOException;public class Main {public static void main(String[] args) {printFilePath(dummy.txt);printFilePath(.. File.separator notes.txt);}public static void printFilePath(String pathname) {File f new File(pathname);System.out.println(File Name: f.getName());System.out.println(File exists: f.exists());System.out.println(Absolute Path: f.getAbsolutePath());try {System.out.println(Canonical Path: f.getCanonicalPath());}catch (IOException e) {e.printStackTrace();}}
}上面的代码生成以下结果。 文件分隔符
不同的操作系统使用不同的字符来分隔路径名中的两个部分。
例如Windows在路径名中使用反斜杠\作为名称分隔符而UNIX使用正斜杠/。
File类定义了一个名为分隔符Char的常量它是系统相关的名称分隔符。
我们可以使用File.separator Char常量来获取名称分隔符作为字符。
File.separator 常量将我们的名称分隔符作为String。
在程序中使用名称分隔符将使您的Java代码在不同的平台上工作。
Java 文件操作
Java IO教程 - Java文件操作
文件创建
我们可以使用File类的createNewFile()方法创建一个新文件
File dummyFile new File(test.txt);
boolean fileCreated dummyFile.createNewFile();该createNewFile()方法创建一个新的空文件如果有指定名称的文件不存在。
如果文件已成功创建则返回true;否则返回false。如果发生I/O错误该方法将抛出IOException。
我们还可以在默认的临时文件目录或目录中创建一个临时文件。要在默认临时目录中创建临时文件请使用File类的createTempFile()静态方法该方法接受前缀和后缀以生成临时文件名。
File tempFile File.createTempFile(abc, .txt);文件夹创建
我们可以使用mkdir()或mkdirs()方法创建一个新目录。
仅当路径名中指定的父目录已存在时mkdir()方法才创建目录。
File newDir new File(C:\\users\\home);只有当C:\users目录已经存在时newDir.mkdir()方法才会创建主目录。
newDir.mkdirs()方法将创建users目录如果它不存在于C驱动器中它将在C:\users目录下创建主目录。
文件删除
我们需要使用File类的delete()方法来删除文件/目录。
目录必须为空我们才能删除它。
如果文件/目录被删除该方法返回true; 否则返回false。
我们还可以延迟删除文件直到JVM通过使用deleteOnExit()方法终止。
如果我们在程序中创建临时文件当程序退出时要删除这将非常有用。
立即删除dummy.txt文件
File dummyFile new File(dummy.txt);
dummyFile.delete();在JVM终止时删除dummy.txt文件
File dummyFile new File(dummy.txt);
dummyFile.deleteOnExit();文件重命名
要重命名文件我们可以使用renameTo()方法它使用一个File对象来表示新文件:
boolean fileRenamed oldFile.renameTo(newFile);完整的源代码
import java.io.File;public class Main {public static void main(String[] argv) {// Rename old-dummy.txt to new_dummy.txtFile oldFile new File(old_dummy.txt);File newFile new File(new_dummy.txt);boolean fileRenamed oldFile.renameTo(newFile);if (fileRenamed) {System.out.println(oldFile renamed to newFile);} else {System.out.println(Renaming oldFile to newFile failed.);}}
}如果文件的重命名成功renameTo()方法返回true;否则返回false。
我们需要检查返回值以确保重命名成功。
上面的代码生成以下结果。 例子
File对象是不可变的。创建后它始终表示相同的路径名。当我们重命名文件时旧的File对象仍然代表原始的路径名。
File对象表示路径名而不是文件系统中的实际文件。
以下代码显示了如何进行文件创建删除和重命名。
import java.io.File;public class Main {public static void main(String[] args) throws Exception {File newFile new File(my_new_file.txt);printFileDetails(newFile);// Create a new fileboolean fileCreated newFile.createNewFile();if (!fileCreated) {System.out.println(newFile could not be created.);}printFileDetails(newFile);// Delete the new filenewFile.delete();System.out.println(After deleting the new file:);printFileDetails(newFile);// recreate the filenewFile.createNewFile();printFileDetails(newFile);// Lets tell the JVM to delete this file on exitnewFile.deleteOnExit();System.out.println(After using deleteOnExit() method:);printFileDetails(newFile);// Create a new file and rename itFile firstFile new File(my_first_file.txt);File secondFile new File(my_second_file.txt);fileCreated firstFile.createNewFile();if (fileCreated || firstFile.exists()) {printFileDetails(firstFile);printFileDetails(secondFile);boolean renamedFlag firstFile.renameTo(secondFile);if (!renamedFlag) {System.out.println(Could not rename firstFile);}printFileDetails(firstFile);printFileDetails(secondFile);}}public static void printFileDetails(File f) {System.out.println(Absolute Path: f.getAbsoluteFile());System.out.println(File exists: f.exists());}
}上面的代码生成以下结果。 文件属性
File类包含让我们获取/设置文件和目录的属性的方法。
我们可以设置分别使用setReadOnly()setReadable()setWritable()和setExecutable()方法将文件设置为只读可读可写和可执行。
我们可以使用lastModified()和setLastModified()方法来获取和设置文件的最后修改日期和时间。
我们可以使用isHidden()方法检查文件是否被隐藏。
文件大小
我们可以使用File类的length()方法获取文件的大小(以字节为单位)。
File myFile new File(myfile.txt);
long fileLength myFile.length();如果File对象表示不存在的文件则length()方法返回零。
length()方法的返回类型是long而不是int。
列出文件和目录
我们可以使用File类的listRoots()静态方法获取文件系统中可用根目录的列表。 它返回一个File对象数组。
File[] roots File.listRoots();以下代码显示如何列出所有可用的根目录。
import java.io.File;public class Main {public static void main(String[] args) {File[] roots File.listRoots();System.out.println(List of root directories:);for (File f : roots) {System.out.println(f.getPath());}}
}我们可以使用File类的list()或listFiles()方法列出目录中的所有文件和目录。
list()方法返回一个String数组而listFiles()方法返回一个File数组。
我们还可以使用这些方法的文件过滤器从返回的结果中排除一些文件和目录。
以下代码显示如何列出目录中的所有文件和目录。
import java.io.File;public class Main {public static void main(String[] args) {// Change the dirPath value to list files from your directoryString dirPath C:\\;File dir new File(dirPath);File[] list dir.listFiles();for (File f : list) {if (f.isFile()) {System.out.println(f.getPath() (File));} else if (f.isDirectory()) {System.out.println(f.getPath() (Directory));}}}
}上面的代码生成以下结果。 文件过滤器
要从列表中排除扩展名为.SYS的所有文件我们可以使用由功能接口FileFilter的实例表示的文件过滤器来实现。
它包含一个accept()方法它将File作为参数列出如果应该列出文件则返回true。返回false不会列出文件。
以下代码创建一个文件过滤器将过滤扩展名为.SYS的文件。
FileFilter filter file - {if (file.isFile()) {String fileName file.getName().toLowerCase();if (fileName.endsWith(.sys)) {return false;}}return true;
};以下代码创建两个文件过滤器 - 一个仅过滤文件另一个仅过滤目录:
// Filters only files
FileFilter fileOnlyFilter File::isFile;// Filters only directories
FileFilter dirOnlyFilter File::isDirectory;
以下代码显示如何使用FileFilter过滤文件。
import java.io.File;
import java.io.FileFilter;public class Main {public static void main(String[] args) {String dirPath C:\\;File dir new File(dirPath);// Create a file filter to exclude any .SYS fileFileFilter filter file - {if (file.isFile()) {String fileName file.getName().toLowerCase();if (fileName.endsWith(.sys)) {return false;}}return true;};File[] list dir.listFiles(filter);for (File f : list) {if (f.isFile()) {System.out.println(f.getPath() (File));} else if (f.isDirectory()) {System.out.println(f.getPath() (Directory));}}}
}上面的代码生成以下结果。