一:阐述
在之前的联系的例子,数据都在内存级别,当程序运行结束之后,数据也随之丢失。保持数据的持久性,无非写入硬盘。之前学习python的时候,我们将数据写入文件,后期从性能考虑写入数据库(redis也是数据库)。
今天我们来学习写入文件操作。
二:File类。
File类的构造器:
1 Constructor and Description 2 File(File parent, String child) 3 Creates a new File instance from a parent abstract pathname and a child pathname string. 4 File(String pathname) 5 Creates a new File instance by converting the given pathname string into an abstract pathname. 6 File(String parent, String child) 7 Creates a new File instance from a parent pathname string and a child pathname string.
不同的构造器,生成不同的File对象。
1 package test13; 2 3 import java.io.File; 4 5 public class File_Demo { 6 public static void main(String...args){ 7 fileDemo(); 8 } 9 public static void fileDemo(){ 10 File file=new File("c:\","abv"); 11 System.out.print(file+" "); 12 File file_1=new File("c:\a\b"); 13 System.out.print(file_1+" "); 14 File file_2=new File(file_1,"uu"); 15 System.out.print(file_2+" "); 16 } 17 }
三:File类的静态常量(目录连接符和切割符号):
1 Modifier and Type Field and Description 2 static String pathSeparator 3 The system-dependent path-separator character, represented as a string for convenience. 4 static char pathSeparatorChar 5 The system-dependent path-separator character. 6 static String separator 7 The system-dependent default name-separator character, represented as a string for convenience. 8 static char separatorChar 9 The system-dependent default name-separator character.
1 package test13; 2 3 import java.io.File; 4 5 public class File_Demo { 6 public static void main(String...args){ 7 fileDemo(); 8 } 9 public static void fileDemo(){ 10 String sep= File.pathSeparator; 11 String sep_pat=File.separator; 12 System.out.print(sep+" "); 13 System.out.print(sep_pat); 14 } 15 }
因为java语言可以跨平台,所以,因为在不同的操作系统,目录的划分符号不一样,在windows中是双引号;在linux中是单引号,不同的目录连接符也不一样,在windows中在linux中/所以我们在程序,如果平台不确定性,则不要写死这些。
四:File的常用方法:
1 package test13; 2 3 4 import java.io.File; 5 import java.io.IOException; 6 7 public class File_Demo { 8 public static void main(String...args){ 9 try{ 10 fileDemo(); 11 }catch (IOException ex){ 12 System.out.print(ex); 13 } 14 15 } 16 public static void fileDemo() throws IOException { 17 File file=new File("c:\","abv"); 18 File file_1=new File("c:\d\f\g","abv");//递归创建。需要注意的是:window是"\",其中一个是转义符. 19 File file_2=new File("c:\d\f\g","cc");//递归创建。需要注意的是:window是"\",其中一个是转义符. 20 file.mkdirs();//创建目录包括递归目录. 21 file_2.createNewFile();//创建对应的目录下的文件. 22 file_1.mkdirs();//创建递归目录. 23 if(file.exists()){// 判断目录和文件是否存在。返回布尔值。 24 System.out.print(222); 25 } 26 file.delete();//删除. 27 28 } 29 }
其中需要注意的是在使用方法:createFile()异常的捕获 要不报错,因为该方法是本身就throws异常。
1 public boolean createNewFile() throws IOException { 2 SecurityManager security = System.getSecurityManager(); 3 if (security != null) security.checkWrite(path); 4 if (isInvalid()) { 5 throw new IOException("Invalid file path"); 6 } 7 return fs.createFileExclusively(path); 8 }