文本I/O

1.文件类file

  file类用以获取文件和目录属性以及删除和重命名文件的方法:

  

File(pathname:String) 为特定路径名创建一个File对象。这里的路径名可以是一个目录也可以是一个文件
File(parent:String,child: Stirng) 为目录parent下的child创建一个File对象。这个child可以是一个文件名也可以是一个子目录
File(parent:File,child: Stirng) 为目录parent下的child创建一个File对象。这个parent是一个File对象,上面的构造方法中,parent是一个字符串
exits():boolean 如果File对象表示的文件或目录名存在则返回true
canRead():boolean 如果File对象表示的文件存在且可读则返回true
canWrite():boolean 如果File对象表示的文件存在且可写则返回true
isDirectory():boolean 如果File对象表示一个目录则返回true
isFile():boolean 如果File对象表示一个F文件则返回true
isAbsolute():boolean 如果使用一个绝对路径名创建一个File对象则返回true
isHidden():boolean 如果File对象中表示的文件被隐藏则返回true。被隐藏的确切含义是:在Windows系统中,可以在文件属性对话框中标记该文件为隐藏的。在Unix系统中,如果文件名以“.”开始则隐藏该文件
getAbsolutePath():String 返回File对象中表示的完整的绝对文件名或目录名
getCanonicalPat():String 除了能删除路劲名中的“."和”..“这样的冗余名,能解析符号链接(在Unix平台上),能将驱动器号转换为标准的大写字母(在Windows系统下),返回的都是跟getAbsolutePath()一样的
getName():String 返回File对象表的完整路径名和文件名的最后一个名字
getParent():String 返回File对象表的完整路径名和文件名的完整父目录
getPath():String 返回File对象表的完整路径名和文件名
lastModified():long

返回文件最后一次修改的时间

length():long 返回文件的大小,如果文件不存在返回0,如果是目录则返回目录大小
listFile():File[] 返回一个File对象下的文件
delete():boolean 删除这个文件。如果删除成功返回true
renameTo(dest:File):boolean 重命名这个文件,操作成功返回true

 

    

  · 在Windows中目录的分隔符是反斜杠()。但是在java中,反斜杠是一个特殊字符,应该写成\。或者斜杠(/),/是java的目录分割符,与Unix系统一样。

  · 构建一个File实例并不会在机器上创建一个文件。不过文件是否存在,都可以创建任意文件名的File实例。可以调用exits()方法来判断这个文件是否存在。

    new File("image/us.gif);  //可以在Windows、Unix或其他任意的系统上运行。

2. 文件读入和输出

2.1 使用PrintWrite写数据

  java.io.PrintWriter类用来创建一个文件并向文本文件写入数据

  创建一个PrintWriter对象:PrintWriter output = new PrintWriter(filename); 

  然后,可以调用PrintWriter对象上的print、println和printf方法像文件写入数据。

PrintWriter(file:File)       --为特定的文件对象创建一个PrintWriter对象。

PrintWriter(filename:String)   --为特定的文件名字符串创建一个PrintWriter对象。

print(s: String):void      --向文件写入一个字符串

print(c:char):void       --向文件写入一个字符

print(cArray:char[]):void          --向文件写入一个字符数组

print(i:int):void        --向文件写入一个int数值

print(i:long):void        --向文件写入一个long数值

print(f:float):void        --向文件写入一个float数值

print(d:double):void      --向文件写入一个double数值

print(b:boolean):void     --向文件写入一个boolean数值

  · println方法除了可以打印一个分隔符之外,其他都跟print方法一样。

  · 如果文件不存在,调用PrintWriter的构造方法会创建一个新文件。如果文件存在,那么文件的当前内容会被废弃

  · 调用PrintWriter的构造方法可能会抛出某种I/O异常,java强制要求编写代码来处理这类异常。

  · 向文件中写入文本之后,应该使用close()方法关闭文件

 1 package demo;
 2 
 3 import java.util.Scanner;
 4 
 5 /**
 6  * 文本输入测试
 7  * Created by luts on 2015/12/2.
 8  */
 9 public class test {
10     public static void main(String[] args) throws  Exception{
11         java.io.File file = new java.io.File("scores.txt"); //创建File对象
12         if (file.exists()){
13             System.out.println("File already exits");
14             System.exit(0);
15         }
16 
17         //新建一个文档
18         java.io.PrintWriter output = new java.io.PrintWriter(file);
19 
20         output.print("Joke: ");
21         output.println(90);
22         output.print("Lucy: ");
23         output.println(80);
24 
25         //关闭文件
26         output.close();
27     }
28 }

2.2 使用Scanner读数据

  Scanner input  =  new Scanner(System.in);  //从控制台读取字符串或者基本数据类型

  Scanner input  =  new Scanner(new File(filename));  //从文件中读取字符串或者基本数据类型

Scanner的常用方法:

  Scanner(source:File)   --创建一个所产生的值都是从特定文件扫描而来的扫描器

  Scanner(source:String)   --创建一个所产生的值都是特定字符串扫描而来的扫描器

  close()          --关闭这个扫描器

  hasNext():boolean      --如果这个扫描器中还有可读数据的时候则返回true

  next()          --从这个扫描器返回下一个标志作为字符串

  nextLine():String    --使用行分隔符从这个扫描器返回一个行字符串

  nextByte():byte    --从这个扫描器返回下一个标志为byte的值 

  nextShort():short    --从这个扫描器返回下一个标志为short的值 

  nextInt():int      --从这个扫描器返回下一个标志为int的值

  nextLong():long    --从这个扫描器返回下一个标志为long的值  

  nextFloat():float    --从这个扫描器返回下一个标志为float的值 

  nextDouble():double    --从这个扫描器返回下一个标志为double的值 

  useDelimiter(pattern:String):Scanner    --设置这个扫描器的分割模式并返回这个扫描器

 1 package demo;
 2 
 3 import java.util.Scanner;
 4 
 5 /**
 6  * 文本读取数据测试
 7  * Created by luts on 2015/12/2.
 8  */
 9 public class test {
10     public static void main(String[] args) throws  Exception{
11         java.io.File file = new java.io.File("scores.txt");
12 
13         Scanner input = new Scanner(file);
14 
15        while(input.hasNext()){
16            String name = input.next();
17            int score = input.nextInt();
18            System.out.println(name + ": " +score);
19        }
20 
21         //关闭文件
22         input.close();
23     }
24 }
Joke:: 90
Lucy:: 80

  方法nextByte()、nextShort()、nextInt()、nextLong()、nextFloat()、nextDouble()和next()等都成为令牌读取方法(token-reading method),因为这些方法读取用分隔符隔开的令牌。默认的分隔符为空格

  一个令牌读取方法首先跳过任意的分隔符,然后读取一个以分隔符结束的令牌,接着令牌会根据对应的方法转成相应的数据类型。

  next()方法读取一个由分隔符分隔的字符串,nextLine()读取一个由行分隔符分隔的一行字符串。

   

原文地址:https://www.cnblogs.com/luts/p/5013491.html