第3章 输入输出
3.1 BufferedInputStream类——缓冲字节输入流 125
3.1.1 构造方法——BufferedInputStream类的构造方法 125
3.1.2 available方法——返回可以读取的估计字节数 125
3.1.3 close方法——关闭此输入流并释放所有关联的系统资源 126
3.1.4 mark方法——记录当前指针所在的位置 126
3.1.5 markSupported方法——测试是否支持mark()方法和reset()方法 127
3.1.6 read方法——从输入流中读取数据 128
3.1.7 reset方法——重新定位输入流 129
3.1.8 skip方法——跳过并丢弃指定字节数量的数据 129
3.2 BufferedOutputStream类——缓冲字节输出流 130
3.2.1 构造方法——BufferedOutputStream类的构造方法 130
3.2.2 flush方法——刷新此缓冲输出流 131
3.2.3 write方法——向输出流中写数据 131
3.3 BufferedReader类——缓冲字符输入流 133
3.3.1 构造方法——BufferedReader类的构造方法 133
3.3.2 close方法——关闭流并释放与之关联的所有资源 133
3.3.3 mark方法——记录当前读指针所在的位置 134
3.3.4 markSupported方法——判断指定流是否支持mark()操作 134
3.3.5 read方法——从缓冲输入流中读取字符 135
3.3.6 readLine方法——读取一个文本行 136
3.3.7 ready方法——判断此流是否已准备好被读取 137
3.3.8 reset方法——重定位指针 137
3.3.9 skip方法——跳过指定数量的字符 138
3.4 BufferedWriter类——缓冲字符输出流 138
3.4.1 构造方法——BufferedWriter类的构造方法 139
3.4.2 close方法——关闭流 139
3.4.3 flush方法——刷新缓冲区 139
3.4.4 newLine方法——写入一个行分隔符 140
3.4.5 write方法——向缓冲区中写数据 141
3.5 DataInputStream类——数据输入流 142
3.5.1 read方法——读取一定数量的字节 143
3.5.2 readByte方法——读取此操作需要的字节 145
3.5.3 readBoolean方法——读取一个布尔值 145
3.5.4 readchar方法——读取此操作需要的字符 145
3.5.5 readDouble方法——读取一个double值 146
3.5.6 readFloat方法——读取一个float值 146
3.5.7 readFully方法——读取一些字节 147
3.5.8 readInt方法——读取一个int值 148
3.5.9 readLong方法——读取一个long值 149
3.5.10 readShort方法——读取一个short值 149
3.5.11 readUnsignedByte方法——读取无符号的byte值 149
3.5.12 readUnsignedShort方法——读取无符号的short值 150
3.5.13 readUTF方法——读取UTF-8编码的字符串 150
3.5.14 skipBytes方法——在输入流中跳过数据的n个字节 152
3.6 DataOutputStream类——数据输出流 153
3.6.1 flush方法——清空此数据输出流 153
3.6.2 size方法——返回计数器 written 的当前值 154
3.6.3 write方法(流输出方法) 155
3.6.4 writeBoolean方法——将boolean值写入输出流 156
3.6.5 writeByte方法——将byte值写入输出流 156
3.6.6 writeBytes方法——将字符串中每一个字符的低字节的内容写入输出流 157
3.6.7 writeChar方法——将char值写入输出流 157
3.6.8 writechars方法——将字符串每个char值写入输出流 158
3.6.9 writeDouble方法——将double值写入输出流 158
3.6.10 writeFloat方法——将float值写入输出流 159
3.6.11 writeLong方法——将long值写入输出流 160
3.6.12 writeShort方法——将short值写入输出流 160
3.6.13 writeUTF()方法——将UTF-8编码字符写入输出流 161
3.7 File类——文件类 161
java.io.File用于表示文件(目录),也就是说程序员可以通过File类在程序中操作硬盘上的文件和目录。
File类只用于表示文件(目录)的信息(名称、大小等),换句话说只能访问文件或目录的相关属性,不能对文件的内容进行访问。
3.7.1 构造方法——File类的构造方法 161
File(String pathname)
通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例
提示:抽象路径应尽量使用相对路径,并且目录的层级分隔符不要直接写”/”或”\”,应使用File.separator这个常量表示,以避免不同系统带来的差异。
File的另一个常用构造方法:
File(File parent,String child)
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
3.7.2 常量——File类的常量 162
3.7.3 canExecute方法——判读文件是否可执行 162
3.7.4 canRead方法——判断文件是否可读 162
3.7.5 canWrite方法——判断文件是否可写 163
3.7.6 compareTo方法——比较文件对象 163
3.7.7 createNewFile方法——创建新的文件 164
File的createNewFile方法用于当且仅当不存在具有此抽象路径名指定的名称的文件时,原子地创建由此抽象路径名指定的一个新的空文件
boolean createNewFile()
返回值:如果指定的文件不存在并成功地创建,则返回 true;如果指定的文件已经存在,则返回 false 。
package com.souvc.api; import java.io.File; import java.io.IOException; import org.junit.Test; public class TestFile { @Test public void testCreateNewFile() throws IOException { File file = new File("JavaApi" + File.separator + "Hello.txt"); // 若不存在,就创建该文件 if (!file.exists()) { file.createNewFile(); } } }
3.7.8 createTempFile方法——创建临时文件 164
3.7.9 delete方法——删除文件 167
File的delete方法用于删除此抽象路径名表示的文件或目录。
boolean delete()
返回值:当且仅当成功删除文件或目录时,返回 true;否则返回 false。
需要注意的是,若此File对象所表示的是一个目录时,在删除时需要保证此为空目录才可以成功删除(目录中不能含有任何子项)。
package com.souvc.api; import java.io.File; import java.io.IOException; import org.junit.Test; public class TestFile { @Test public void testDeleteFile() { File file = new File("JavaApi" + File.separator + "Hello.txt"); file.delete(); } }
package com.souvc.api; import java.io.File; import java.io.IOException; import org.junit.Test; public class TestFile { @Test public void testDeleteDir() { File file = new File("myDir"); file.delete(); } }
3.7.10 deleteOnExit方法——在虚拟机终止时,请求删除文件 167
3.7.11 equals方法——判断File对象是否相等 168
3.7.12 exists方法——判断文件是否存在 168
File的exists方法用于测试此抽象路径名表示的文件或目录是否存在
boolean exists()
若该File表示的文件或目录存在则返回true,否则返回false。
3.7.13 getAbsoluteFile方法——获取绝对路径的文件对象 169
3.7.14 getAbsolutePath方法——获取绝对路径的字符串对象 169
3.7.15 getCanonicalFile方法——返回此抽象路径名的规范形式 170
3.7.16 getCanonicalPath方法——返回此抽象路径名的规范路径名字符串 170
3.7.17 getFreeSpace方法——获取剩余空间 171
3.7.18 getName方法——获取文件名称 172
3.7.19 getParent方法——获取上一级路径的字符串 172
3.7.20 getParentFile方法——获取上一级路径的File对象 173
3.7.21 getPath方法——获取路径字符串 173
3.7.22 getTotalSpace方法——获取总空间大小 173
3.7.23 getUsableSpace方法——精确获取可写入空间大小 174
3.7.24 hashCode方法——生成File对象的哈希码 174
3.7.25 isAbsolute方法——测试此路径名是否为绝对路径名 175
3.7.26 isDirectory方法——判断File对象是否为目录 175
File的isDirectory方法用于判断当前File对象表示的是否为一个目录
boolean isDirectory()
返回值:若File对象表示的是一个目录,则返回true
3.7.27 isFile方法——判断File对象是否为文件 176
File的isFile方法用于判断当前File对象表示的是否为一个文件
boolean isFile()
3.7.28 isHidden方法——判断File对象是否设置隐藏属性 176
3.7.29 lastModified方法——获取最后修改时间 177
3.7.30 length方法——获取文件长度 177
File的length方法用于返回由此抽象路径名表示的文件的长度
long length()
该方法返回的long值表示该文件所占用的字节量。
示例:
查看当前工程下文件夹下HelloWorld.txt文件的大小。
(1)当前工程 JavaApi 下文件夹下,新建JavaApi文件夹,然后新建一个文本文件 HelloWorld.txt。
(2)使用length属性。
package com.souvc.api; import java.io.File; import org.junit.Test; public class TestFile { @Test public void testLength() { File file = new File("JavaApi" + File.separator + "HelloWorld.txt"); System.out.println(file + "占用字节量:" + file.length()); } }
(3)效果如下:
JavaApi\HelloWorld.txt占用字节量:0
(5)在HelloWorld.txt下加个hello字符。再运行。
JavaApi\HelloWorld.txt占用字节量:5
3.7.31 list方法——获取目录列表的字符串数组 178
3.7.32 listFiles方法——获取目录列表的File数组 179
(1)File的listFiles方法用于返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
File[] listFiles()
返回值:抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件和目录。如果目录为空,那么数组也将为空。如果抽象路径名不表示一个目录,或者发生 I/O 错误,则返回 null。
(2)通过listFiles方法我们可以获取一个目录下的所有子项,但有些时候我们并不希望获取全部子项,而是想获取部分满足我们实际需求的子项时,我们可以使用File的重载方法:
File[] listFiles(FileFilter filter)
这里我们看到,该重载方法 要求我们传入一个参数,其类型是FileFilter。什么是FileFilter呢? FileFilter是用于抽象路径名的过滤器,说白了就是定义一个规律规则,那么结合listFiles方法,我们就可以将满足此过滤规则的子项返回, 其他则忽略。
FileFilter是一个接口,所以当我们需要定义某种过滤规则时,我们可以定义一个类来实现这个接口,而此接口的实例可传递给 File 类的 listFiles(FileFilter) 方法。
File[] list = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().startsWith(".");
}
});
该方法的参数FileFilter实例的accept方法并进行过滤,listFiles方法会将所有accept方法返回true的子项保留并返回。这个例子里我们会将dir中子项的名字以"."开头的返回。
3.7.33 listRoots方法——获取根目录的File数组 181
3.7.34 mkdir方法——创建目录 182
File的mkdir方法用于创建此抽象路径名指定的目录。
boolean mkdir()
返回值:当且仅当已创建目录时,返回 true;否则返回 false
package com.souvc.api; import java.io.File; import java.io.IOException; import org.junit.Test; public class TestFile { @Test public void testMkDir() { File dir = new File("myDir"); dir.mkdir(); } }
3.7.35 mkdirs方法——创建完整路径的所有目录 183
File的mkdirs方法用于创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。注意,此操作失败时也可能已经成功地创建了一部分必需的父目录。
boolean mkdirs()
返回值:当且仅当已创建目录以及所有必需的父目录时,返回 true;否则返回 false
package com.souvc.api; import java.io.File; import java.io.IOException; import org.junit.Test; public class TestFile { @Test public void testMkDirs() { File dir = new File("a" + File.separator + "b" + File.separator + "c"); dir.mkdirs(); } }
3.7.36 renameTo方法——重命名文件或文件夹 183
3.7.37 setExecutable方法——设置可执行属性 184
3.7.38 setLastModified方法——设置最后修改时间 185
3.7.39 setReadable方法——设置可读属性 185
3.7.40 setReadOnly方法——设置只读属性 187
3.7.41 setWritable方法——设置可写属性 187
3.7.42 toString方法——File的字符串格式 188
3.7.43 toURI方法——获取File的URI 189
3.8 FileInputStream类——文件字节输入流 189
3.8.1 构造方法——FileInputStream类的构造方法 189
3.8.2 available方法——获取可读的有效字节数 189
3.8.3 close方法——关闭文件输入流 190
3.8.4 finalize方法——在销毁改对象时关闭输入流 191
3.8.5 getChannel方法——返回与此文件输入流有关的惟一FileChannel对象 191
3.8.6 getFD方法——获取File对象连接的FileDescriptor对象 191
3.8.7 read方法——从文件字节流读取数组 192
3.8.8 skip方法——跳过并丢弃n个字节 193
3.9 FileOutputStream类——文件字节输出流 194
3.9.1 构造方法——FileOutputStream类的构造方法 194
3.9.2 close方法——关闭文件输出流并释放资源 195
3.9.3 finalize方法——流销毁时关闭输出流 195
3.9.4 getChannel方法——获取输出流的FileChannel对象 195
3.9.5 getFD方法——获取File对象连接的FileDescriptor对象 196
3.9.6 write方法——向文件输出流写数据 196
3.10 FileReader类——文件的字符输入流 199
3.10.1 构造方法——FileReader类的构造方法 199
3.10.2 close方法——关闭字符输入流 200
3.10.3 read方法——读取字符数据 200
3.11 FileWriter类——文件的字符输出流 202
3.11.1 构造方法——FileWriter类的构造方法 202
3.11.2 close方法——关闭字符输出流 202
3.11.3 flush方法——刷新缓冲区 203
3.11.4 write方法——向字符输出流写数据 203
3.12 InputStream类——字节输入流 205
3.12.1 available方法——获取有效的可读取的字节数 205
3.12.2 close方法——关闭输入流 206
3.12.3 mark方法——在此输入流中标记当前的位置 206
3.12.4 markSupported方法——判断是否支持mark和reset方法 207
3.12.5 read方法——读取字节输入流中的数据 207
3.12.6 reset方法——重新定位到最后一次mark()方法时的位置 209
3.12.7 skip方法——跳过并丢弃n个字节 209
3.13 OutputStream类——字节输出流 210
3.13.1 close方法——关闭字节输出流 210
3.13.2 flush方法——刷新缓冲区 211
3.13.3 write方法——向输出流写数据 211
3.14 ObjectOutputStream类——对象输出流 213
3.14.1 构造方法——ObjectOutputStream类的构造方法 213
3.14.2 close方法——关闭对象输出流 213
3.14.3 flush方法——刷新缓冲区 214
3.14.4 writeObject方法——向输出流写入对象 214
3.14.5 writeBytes方法——向输出流写入字符串 215
3.14.6 write方法——向输出流写入byte值 215
3.14.7 writeChar方法——向输出流写入char值 216
3.14.8 writeChars方法——向输出流写入String值 217
3.14.9 writeDouble方法——向输出流写入double值 217
3.14.10 writeFields方法——将已缓冲的字段写入流中 217
3.14.11 writeFloat方法——向输出流写入float值 218
3.14.12 writeInt方法——向输出流写入int值 218
3.14.13 writeLong方法——向输出流写入long值 219
3.14.14 writeShort方法——向输出流写入short值 219
3.14.15 writeUTF方法——向输出流写入float值 219
3.15 ObjectInputStream类——对象输入流 220
3.15.1 构造方法——ObjectInputStream类的构造方法 220
3.15.2 readObject方法——从输入流读取对象 220
3.15.3 readInt方法——从输入流读取int值 221
3.15.4 readFloat方法——从输入流读取float值 221
3.15.5 readchar方法——从输入流读取char值 222
3.16 RandomAccessFile类——随机文件访问类 222
Java提供了一个可以对文件随机访问的操作,访问包括读和写操作。该类名为RandomAccessFile。该类的读写是基于指针的操作。
3.16.1 构造方法——RandomAccessFile类的构造方法 222
RandomAccessFile在对文件进行随机访问操作时有两个模式,分别为只读模式(只读取文件数据),和读写模式(对文件数据进行读写)。
只读模式(只读取文件数据):
在创建RandomAccessFile时,其提供的构造方法要求我们传入访问模式:
RandomAccessFile(File file,String mode)
RandomAccessFile(String filename,String mode)
其中构造方法的第一个参数是需要访问的文件,而第二个参数则是访问模式:
r”:字符串”r”表示对该文件的访问是只读的。
读写模式(对文件数据进行读写):
创建一个基于文件访问的读写模式的RandomAccessFile我们只需要在第二个参数中传入”rw”即可。
RandomAccessFile raf = new RandomAccessFile(file,”rw”);
3.16.2 close方法——关闭数据流 222
RandomAccessFile在对文件访问的操作全部结束后,要调用close()方法来释放与其关联的所有系统资源。
void close()
RandomAccessFile raf = new RandomAccessFile(file,”rw”);
//读写操作
raf.close();//访问完毕后要关闭以释放系统资源。
3.16.3 getChannel方法——返回此文件的FileChannel对象 223
3.16.4 getFD方法——返回此流的不透明文件描述符对象 223
3.16.5 getFilePointer方法——返回文件中的当前偏移量 224
RandomAccessFile的读写操作都是基于指针的,也就是说总是在指针当前所指向的位置进行读写操作。
RandomAccessFile提供了一个可以获取当前指针位置的方法:
long getFilePointer()
RandomAccessFile在创建时默认指向文件开始(第一个字节),通过getFilePointer方法获取指针位置时值是"0"。
RandomAccessFile raf = new RandomAccessFile(file,”rw”); System.out.println(raf.getFilePointer());//0 raf.write('A');//写出一个字节后,指针自动向后移动到下一个字节位置 System.out.println(raf.getFilePointer());//1 raf.writeInt(3); System.out.println(raf.getFilePointer());//5 raf.close();
3.16.6 length方法——返回此文件的长度 224
3.16.7 read方法——读取一个数据字节 225
RandomAccessFile提供了一个可以从文件中读取字节的方法:
int read()
该方法会从RandomAccessFile当前指针位置读取一个byte(8位) 填充到int的低八位, 高24位为0, 返回值范围正数: 0~255, 如果返回-1表示读取到了文件末尾EOF(EOF:End Of File)! 每次读取后自动移动文件指针, 准备下次读取。
3.16.8 readBoolean方法——从文件读取一个boolean值 227
3.16.9 readByte方法——从文件读取一个byte值 228
RandomAccessFile提供了一个可以从文件中批量读取字节的方法:
int read(byte[] b)
该方法会从文件中尝试最多读取给定数组的总长度的字节量,并从给定的字节数组第一个位置开始,将读取到的字节顺序存放至数组中,返回值为实际读取到的字节量 。
3.16.10 readInt方法——从文件读取一个int值 228
3.16.11 readChar方法——从文件读取一个char值 229
3.16.12 readDouble方法——从文件读取一个double值 229
3.16.13 readFloat方法——从文件读取一个float值 230
3.16.14 readFully方法——从文件读取一个字节数组 230
3.16.15 readLine方法——从此文件读取文本的下一行 232
package com.souvc.common.util; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; /** * 类名: ReadTxtFile </br> * 描述:读取文本文件 </br> * 开发人员: souvc </br> * 创建时间: 2015-11-19 </br> * 发布版本:V1.0 </br> */ public class ReadTxtFile { /** * 功能:Java读取txt文件的内容 * 步骤: * 1:先获得文件句柄 * 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取 * 3:读取到输入流后,需要读取生成字节流 * 4:一行一行的输出。readline()。 * 备注:需要考虑的是异常情况 * @param filePath */ public static void readTxtFile(String filePath){ try { String encoding="utf-8"; File file=new File(filePath); if(file.isFile() && file.exists()){ //判断文件是否存在 InputStreamReader read = new InputStreamReader(new FileInputStream(file),encoding);//考虑到编码格式 BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; while((lineTxt = bufferedReader.readLine()) != null){ System.out.println(lineTxt); } read.close(); }else{ System.out.println("找不到指定的文件"); } } catch (Exception e) { System.out.println("读取文件内容出错"); e.printStackTrace(); } } public static void main(String argv[]){ String filePath = "test.txt"; readTxtFile(filePath); } }
新建一个test.txt文件,放到项目根目录。
3.16.16 readLong方法——从文件读取一个long值 232
3.16.17 readShort方法——从文件读取一个short值 233
3.16.18 readUnsignedByte方法——从文件读取无符号byte值 234
3.16.19 readUnsignedShort方法——从文件读取无符号short值 234
3.16.20 readUTF方法——从此文件读取一个UTF-8字符串 235
3.16.21 setLength方法——设置此文件的长度 235
3.16.22 seek方法——将文件指针移至指定位置 236
RandomAccessFile的提供了一个方法用于移动指针位置。
void seek(long pos)
使用该方法可以移动指针到指定位置。
RandomAccessFile raf = new RandomAccessFile(file,”rw”); System.out.println(raf.getFilePointer());//0 raf.write('A');//指针位置1 raf.writeInt(3);//指针位置5 raf.seek(0);//将指针移动到文件开始处(第一个字节的位置) System.out.println(raf.getFilePointer());//0 raf.close();
3.16.23 skipBytes方法——跳过并丢弃n个字节 236
RandomAccessFile的提供了一个方法可以尝试跳过输入的 n 个字节以丢弃跳过的字节,方法定义为:
int skipBytes(int n)
该方法可能跳过一些较少数量的字节(可能包括零)。这可能由任意数量的条件引起;在跳过n个字节之前已到达文件的末尾只是其中的一种可能。此方法不抛出 EOFException。返回跳过的实际字节数。如果 n 为负数,则不跳过任何字节。
3.16.24 write方法——向此文件写入指定的字节 237
RandomAccessFile提供了一个可以向文件中写出字节的方法:
void write(int d)
该方法会根据当前指针所在位置处写入一个字节,是将参数int的”低8位”写出。
RandomAccessFile提供了一个可以向文件中写出一组字节的方法:
void write(byte[] d)
该方法会根据当前指针所在位置处连续写出给定数组中的所有字节,与该方法相似的还有一个常用方法:
void write(byte[] d,int offset,int len)
该方法会根据当前指针所在位置处连续写出给定数组中的部分字节,这个部分是从数组的offset处开始,连续len个字节。
3.16.25 writeBoolean方法——将 boolean 写入文件 239
3.16.26 writeByte方法——将 byte 写入该文件 239
3.16.27 writeBytes方法——按字节序列将该字符串写入该文件 240
3.16.28 writeChars方法——写入作为字符数据的字符串 240
3.16.29 writeDouble方法——写入double值 241
3.16.30 writeFloat方法——向文件写入float值 241
3.16.31 writeInt方法——向文件写入int值 242
3.16.32 writeLong方法——向文件写入long值 242
3.16.33 writeShort方法——向文件写入short值 243
3.16.34 writeUTF方法——向文件写入UTF-8 编码的字符串 243
3.17 Reader类——读取字符流的抽象类 244
3.17.1 close方法——关闭流 244
3.17.2 mark方法——标记流中的当前位置 244
3.17.3 markSupported方法——判断是否支持mark()操作 245
3.17.4 read方法——读取流中的数据 245
3.17.5 ready方法——判断是否准备读取此流 247
3.17.6 reset方法——重置该流 248
3.17.7 skip方法——跳过并丢弃n个字节 248
3.18 Scanner类——简单文本扫描器 249
3.18.1 构造方法——Scanner类的构造方法 249
3.18.2 close方法——关闭扫描器 250
3.18.3 delimiter方法——返回匹配分隔符的 Pattern 250
3.18.4 findInLine方法——忽略分隔符查找下一个构造模式 250
3.18.5 findWithinHorizon方法——试图查找下一个指定模式 251
3.18.6 hasNext方法——扫描器的输入中是否有另一个标记 252
3.18.7 hasNextBigDecimal方法——下一个标记是否默认基数中的一个 BigDecimal 254
3.18.8 hasNextBigInteger方法——下一个标记是否默认基数中的一个BigInteger 254
3.18.9 hasNextBoolean方法——下一个标记是否为布尔值 255
3.18.10 hasNextByte方法——下一个标记是否为byte值 256
3.18.11 hasNextDouble方法——下一个标记是否为double值 256
3.18.12 hasNextFloat方法——下一个标记是否为float值 257
3.18.13 hasNextInt方法——下一个标记是否为int值 257
3.18.14 hasNextLine方法——是否存在下一行 258
3.18.15 hasNextLong方法——下一个标记是否为long值 259
3.18.16 hasNextShort方法——下一个标记是否为short值 260
3.18.17 ioException方法——最后抛出的 IOException 260
3.18.18 locale方法——返回此扫描器的语言环境 261
3.18.19 match方法——最后扫描操作的匹配结果 261
3.18.20 next方法——读取下一个完整标记 262
3.18.21 nextBigDecimal方法——读取下一个BigDecimal对象 263
3.18.22 nextBigInteger方法——读取下一个BigInteger对象 264
3.18.23 nextBoolean方法——读取下一个boolean值 265
3.18.24 nextByte方法——读取下一个byte值 266
3.18.25 nextDouble方法——读取下一个double值 267
3.18.26 nextFloat方法——读取下一个float值 267
3.18.27 nextInt方法——读取下一个int值 268
3.18.28 nextLine方法——读取下一行文本 269
3.18.29 nextLong方法——读取下一个long值 269
3.18.30 nextShort方法——读取下一个short值 270
3.18.31 radix方法——返回扫描器的默认基数 271
3.18.32 reset方法——重置扫描器 271
3.18.33 skip方法——忽略分隔符跳过匹配的输入信息 272
3.18.34 toString方法——返回此 Scanner 的字符串表示形式 273
3.18.35 useDelimiter方法——设置为指定分隔模式 273
3.18.36 useLocale方法——设置为指定的语言环境 274
3.18.37 useRadix方法——设置指定基数 274
3.19 Writer类——写入字符流的抽象类 275
3.19.1 append方法——添加指定字符 275
3.19.2 close方法——关闭数据流 275
3.19.3 flush方法——刷新流的缓冲 276
3.19.4 write方法——向字符输出流中写数据 276