1文件类File
❶封装文件或路径的属性。不包括创建和读写文件操作。File实例并不会实际创建文件。不论文件存在与否,可以创建任意文件名的实例。两种实例创建方式如下: new File("c:\\book");//在目录下创建一个File对象 new File("c:\book\test.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系统,\n)之前的字符,包括空格。
例如:文本文件test.txt包括"34 56\n"。使用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()+"\n Gender: "+input.next()+"\n 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();
}
}
结果如下: