Java探索之旅(14)——文本I/O与读写

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();}}

结果如下:

不要忘本,任何时候,任何事情。

Java探索之旅(14)——文本I/O与读写

相关文章:

你感兴趣的文章:

标签云: