在创建Scanner类的对象时,需要用System.in作为它的参数,也可以将Scanner看作是System.in对象的支持者,System.in取得用户输入的内容后,交给Scanner来作一些处理.
Scanner类中提供了多个方法:
import java.io.BufferedReader. readLine()方法会返回用户在按下Enter键之前的所有字符输入,不包括最后按下的Enter返回字符.使用BufferedReader对象的readLine()方法必须处理java.io.IOException异常(Exception).使用BufferedReader来取得输入,理解起来要复杂得多.但是使用这个方法是固定的,每次使用前先如法炮制就可以了
File的使用非常的简单,它有四个构造函数:
File(String parent,String child)
File(File parent,String child)
File(URI uri)
File(String pathname)
其中前面两个可以让我们在某个已知特定的目录下新建文件或者目录,后面两个我们可以通过pathname或者URI新建文件或者目录。有一点需要注重, File虽然是一个系统无关的代表,但是pathname的表示是和系统相关的,比如UNIX下"/"表示root目录,而windows下通常用盘符来表示。比如绝对路径C:helloworldmingjava,假如是相对路径的话则不以"/"开头,一般相对路径是相对当前目录的。当我们创建一个 File的时候可以通过exists()方法判定它是否存在,假如不存在我们可以选择是创建为文件还是创建为目录。
public class FileWriterDemo {
}
}
//演示已有数据文件的续写;
import java.io.*;
public class FileWriterDemo4 {
}
FileInputStream:
FileInputStream 用于顺序访问本地文件,用于读取诸如图像数据之类的原始字节流,从超类InputStream中继承了read,close等方法,对文件进行操作,不支持方法和方法.它的两个常用的构造方法是: FileInputStream(String filepath/*文件的全称路径*/); FileInputStream(File fileObj/*描述该文件的File对象*/);
可以用这样的方法构造文件输入流:
(1)FileInputStream f1 = new FileInputStream("test.txt");
(2)File f =new File("test.txt"); FileInputStream f2 = new FileInputStream(f);
FileInputStream重写了抽象类 InputStream的读取数据的方法:
public int read(); //从此输入流中读取一个数据字节
public int read(byte[ ] b);//从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中
public int read(byte[] b,int off, int len);//从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。
如果读取数据时,输入流结束就返回-1.
FileOutputStream:
FileOutputStream用于向一个文本文件写数据.用于写入诸如图像数据之类的原始字节的流,它从超类OutputStream中继承等方法.它常用的构造方法如下:
FileOutputStream(String filepath/*文件的全称路径*/)
FileOutputStream(File fileobj/*描述该文件的对象*/)
FileOutputStream(String filepath,boolean append/*如果为真,文件以追加方式打开,不覆盖已有文件的内容,如果是假,则覆盖原文件的内容*/)
FileOutputStream(File fileObj,boolean append)
FileOutputStream的创建不依赖文件是否存在.如果filepath表示的文件不存在,FileOutputStream在打开前就创建它.如果文件存在,则打开它,准备写入内容. 如果打开一个只读文件,会引发IOException异常.
//读取一个字节并以证书的形式返回(0~255) 如果返回-1已到输入流的结尾。int read()throws IoException
//读取一系列字节并存储到一个数组buffer,返回实际读取的字节数,如果读取前已到输入流的末尾返回-1 int read(byte[]buffer)throws IoException
//读取length个字节 并存储到一个字节数组buffer,从length位置开始返回实际读取的字节数,如果读取前以到输入流的末尾返回-1 int read(byte[] buffer,int offset,int length)throws IoException
//关闭释放内存资源 void close()throws IoException
//跳过n个字节不读,返回实际跳过的字节数 long skip(long n)throws IoException
java.lang.Object
---------------------------------------------------------------------
extends Reader
下列类的父类:
FileReader
一个 InputStreamReader 类是从字节流到字符流的桥梁:它读入字节,并根据指定的编码方式,将之转换为字符流。使用的编码方式可能由名称指定,或平台可接受的缺省编码方式。
JDK1.1
参见:
BufferedReader, InputStream
InputStreamReader(InputStream)
用缺省的字符编码方式,创建一个 InputStreamReader。
InputStreamReader(InputStream, String)
用已命名的字符编码方式,创建一个 InputStreamReader。
close()
关闭流。
getEncoding()
返回当前流使用的编码方式名。
read()
读取单一字符。
read(char[], int, int)
将若干字符读入一个数组中。
ready()
报告此流是否已准备读。
InputStreamReader
in - 一个 InputStream
InputStreamReader
in - 一个 InputStream
enc - 使用的编码方式名
抛出: UnsupportedEncodingExcep
如果不支持名称编码
getEncoding
读取的字符;如果已读到流尾则返回 -1。
抛出: IOException
如果发生一 I/O 错误。
覆盖:
类 Reader 中的 read
read
cbuf - 目的缓冲区
off - 开始存储字符的偏移量。
len - 读取的最大字符数
返回值:
读取的字符数;如果已读到流尾则返回 -1。
抛出: IOException
如果发生一 I/O 错误。
覆盖:
类 Reader 中的 read
ready
如果发生一 I/O 错误。
覆盖:
类 Reader 中的 ready
close
如果发生一 I/O 错误。
覆盖:
类 Reader 中的 close
public IOException ioException()返回此 Scanner 的基础 Readable 最后抛出的 IOException。如果不存在这样的异常,则此方法返回 null。
返回:
此扫描器的 readable 最后抛出的异常
--------------------------------------------------------------------------------
delimiter
public Pattern delimiter()返回此 Scanner 当前正在用于匹配分隔符的 Pattern。
返回:
此扫描器的分隔模式。
--------------------------------------------------------------------------------
useDelimiter
public Scanner useDelimiter(Pattern pattern)将此扫描器的分隔模式设置为指定模式。
参数:
pattern - 分隔模式
返回:
此扫描器
--------------------------------------------------------------------------------
useDelimiter
public Scanner useDelimiter(String pattern)将此扫描器的分隔模式设置为从指定 String 构造的模式。
此方法调用 useDelimiter(pattern) 的行为与调用 hasDelimiter(Pattern.compile(pattern)) 完全相同。
参数:
pattern - 指定分隔模式的字符串
返回:
此扫描器
--------------------------------------------------------------------------------
locale
public Locale locale()返回此扫描器的语言环境。
扫描器的语言环境会影响其与正则表达式匹配的默认基元的许多元素;参见上面的本地化数字。
返回:
此扫描器的语言环境
--------------------------------------------------------------------------------
useLocale
public Scanner useLocale(Locale locale)将此扫描器的语言环境设置为指定的语言环境。
扫描器的语言环境会影响其与正则表达式匹配的默认基元的许多元素;参见上面的本地化数字。
参数:
locale - 指定要使用的语言环境的字符串
返回:
此扫描器
--------------------------------------------------------------------------------
radix
public int radix()返回此扫描器的默认基数。
扫描器的基数会影响其与正则表达式匹配的默认数的元素;参见上面的本地化数字。
返回:
此扫描器的默认基数
--------------------------------------------------------------------------------
useRadix
public Scanner useRadix(int radix)将此扫描器的默认基数设置为指定基数。
扫描器的基数会影响其与正则表达式匹配的默认数的元素;参见上面的本地化数字。
如果该基数小于 Character.MIN_RADIX 或大于 Character.MAX_RADIX,则抛出 IllegalArgumentException。
参数:
radix - 扫描数时要使用的基数
返回:
此扫描器
抛出:
IllegalArgumentException - 如果基数超出范围
--------------------------------------------------------------------------------
match
public MatchResult match()返回此扫描器所执行的最后扫描操作的匹配结果。如果未执行匹配操作,或者最后的匹配操作失败,则此方法抛出 IllegalStateException。
如果 Scanner 的不同 next 方法执行结束时未抛出异常,则它们会给出一个匹配结果。例如,调用了 nextInt() 方法(它返回一个 int)后,此方法返回一个 MatchResult,作为搜索上述 Integer 正则表达式的结果。类似地,如果 findInLine(java.lang.String)、findWithinHorizon(java.lang.String, int) 和 skip(java.util.regex.Pattern) 方法的调用成功,则它们会给出一个匹配结果。
返回:
最后一次匹配操作的匹配结果
抛出:
IllegalStateException - 如果未给出匹配结果
--------------------------------------------------------------------------------
toString
public String toString()返回此 Scanner 的字符串表示形式。Scanner 的字符串表示形式包含了对调试可能有用的信息。没有指定确切格式。
覆盖:
类 Object 中的 toString
返回:
此扫描器的字符串表示形式。
--------------------------------------------------------------------------------
hasNext
public boolean hasNext()如果此扫描器的输入中有另一个标记,则返回 true。在等待要扫描的输入时,此方法可能阻塞。扫描器将不执行任何输入。
指定者:
接口 Iterator<String> 中的 hasNext
返回:
当且仅当此扫描器有另一个标记时才返回 true
抛出:
IllegalStateException - 如果此扫描器已关闭
另请参见:
Iterator
--------------------------------------------------------------------------------
next
public String next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息。即使以前调用 hasNext() 返回了 true,在等待要扫描的输入时此方法也可能阻塞。
指定者:
接口 Iterator<String> 中的 next
返回:
下一个标记
抛出:
NoSuchElementException - 如果没有更多标记可用
IllegalStateException - 如果此扫描器已关闭
另请参见:
Iterator
--------------------------------------------------------------------------------
remove
public void remove()Iterator 的这种实现不支持移除操作。
指定者:
接口 Iterator<String> 中的 remove
抛出:
UnsupportedOperationException - 如果调用此方法。
另请参见:
Iterator