Java探索之旅(14)——文本I/O与读写 1文件类File 2.写文件类PrintWriter 3.读文件类Scanner 4.文本替换

Java探索之旅(14)——文本I/O与读写
1文件类File
2.写文件类PrintWriter
3.读文件类Scanner
4.文本替换

   ❶封装文件或路径的属性。不包括创建和读写文件操作。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();
	}

}



结果如下:

Java探索之旅(14)——文本I/O与读写
1文件类File
2.写文件类PrintWriter
3.读文件类Scanner
4.文本替换