zoukankan      html  css  js  c++  java
  • Java探索之旅(14)——文本I/O与读写

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



    结果如下:


  • 相关阅读:
    ffmpeg——压缩mav格式音频
    java控制台编译通过,运行出现找不到或无法加载主类的情况
    “Hello World!”团队——Final发布用户使用报告
    PSP总结报告
    软工第十二周个人PSP
    “Hello World!”团队第七周召开的第一次会议
    个人第十一周PSP
    互评Beta版本—博客园安卓APP
    sqlalchemy 学习笔记
    sqlite学习笔记
  • 原文地址:https://www.cnblogs.com/engineerLF/p/5393081.html
Copyright © 2011-2022 走看看