1文件类File
❶封装文件或路径的属性。不包括创建和读写文件操作。File实例并不会实际创建文件。不论文件存在与否,可以创建任意文件名的实例。两种实例创建方式如下: new File("c:\book");//在目录下创建一个File对象 new File("c:ook est.text");//以某个文件创建一个File对象
❷构造函数: File(pathname:String)//为特定路径名创建对象,路径名为目录或者文件 File(String parent,String child)//目录parent的child创建对象,child可以是文件名或者子目录 File(File parent,String child)//目录创建的File对象parent下的child创建对象,child可以是文件名或者子目录
❸对象文件是否存在exsits,可读canRead,可写canWrite(),是否是文件isFile()或者目录isDirectory,是否隐藏isHidden()。返回boolean
❹获得文件名(含后缀)getName(),获得路径名和绝对路径名getpath()(返回创建时候表示路径名或者文件名),getAbsolute()。返回String
❺获得最后修改时间lastModified()《毫秒表示》和文件长度length()。返回Long
❻删除文件delete()和重命名renameTo(File f),替换成f里的文件名。返回Boolean。
❼获得File目录下的文件,返回File[]
定义绝对路径(absolutely)=驱动盘名+目录路径+文件名+文件格式。为了便于与其他平台通用,一般不使用绝对文件名。默认路径为当前路径。
2.写文件类PrintWriter
❶PrintWriter(String );//特定文件名创建,如test.txt
❷PrintWriter(File);//特定文件对象创建
❸print,println,printf写入基本数据类型(Line,Byte,Int,short,long,double,float)以及String,字符数组(使用数组名作参数)。类似于输出到控制台
❹写关闭close()。必须使用,否则无法保存
import java.io.FileNotFoundException; public class TextIO { @SuppressWarnings("resource") public static void main(String[] args) throws FileNotFoundException { java.io.File file=new java.io.File("test.txt"); //文件写 if(file.exists()) file.delete();//若已经存在该文件即删除 java.io.PrintWriter output=new java.io.PrintWriter(file); output.println("Ann F Math 92"); output.print("Jack M"); String Jack=new String(" Math 83"); output.println(Jack); output.close(); } }
3.读文件类Scanner
❶构造函数Scanner(File/String)
❷读关闭close()。可以省略但是建议保留以释放被文件占用之资源
❸是否还有数据可读。hasNext(),hasNextLine()
❹数据读取next*()。如下一个标志(默认),一行Line,Byte,Int,short,long,double,float
数据读取都为令牌读取法,它们均读取用分隔符分分隔的令牌。默认分隔符号为空格,可以使用useDelimiter(String)修改。以nextLine()为例,其读取分隔符开始至行分隔符结束的字符,仅返回行分隔符(window系统, )之前的字符,包括空格。
例如:文本文件test.txt包括"34 56 "。使用Scanner读取文件的方法赋值 Scanner input=new Scanner(new File("test.text")); int intValue=input.nextInt()://值为34 String s=input.nextLine();//值为“ 56”,含空格。 然而,倘若从控制台输入"34回车56回车" int intValue=input.nextInt()://值为34 String s=input.nextLine();//值为“”,即为空。 Scanner input=new Scanner(System.in);
mport java.io.FileNotFoundException; import java.util.Scanner; public class TextIO { @SuppressWarnings("resource") public static void main(String[] args) throws FileNotFoundException { java.io.File file=new java.io.File("test.txt"); //文件读 Scanner input=new Scanner(file); if(!file.exists()) System.out.println("文件"+file.getName()+"不存在"); while(input.hasNext()) System.out.println("+++Name: "+input.next()+" Gender: "+input.next()+" Score: "+input.nextLine()); input.close(); } }
输出: +++Name: Ann Gender: F Score: Math 92 +++Name: Jack Gender: M Score: Math 83
4.文本替换
将文件text.txt中的人名Jack全部替换成Tom,并将修改后的文件写到test1.txt
package TextIO; import java.io.*; import java.util.*; public class TextIO { public static void main(String[] args) throws FileNotFoundException { java.io.File file=new java.io.File("test.txt"); java.io.File file1=new java.io.File("test1.txt"); Scanner input = null; //文件读 if(!file.exists()) {System.out.println("文件"+file.getName()+"不存在"); System.exit(0);} else input = new Scanner(file); //文件写 if(!file1.exists()) file1.delete();//若已经存在该文件即删除 PrintWriter output=new PrintWriter(file1); //文件替换 while(input.hasNextLine()) output.println(input.nextLine().replaceAll("Jack", "Tom")); output.close(); input.close(); } }
结果如下: