方法名及返回值类型 | 说明 |
---|---|
int read() |
从输入流中读取一个字符,并把它转换为 0~65535 的整数。如果返回 -1, 则表示 已经到了输入流的末尾。为了提高 I/O 操作的效率,建议尽量使用下面两种 read() 方法 |
int read(char[] cbuf) |
从输入流中读取若干个字符,并把它们保存到参数 cbuf 指定的字符数组中。 该方 法返回读取的字符数,如果返回 -1,则表示已经到了输入流的末尾 |
int read(char[] cbuf,int off,int len) |
从输入流中读取若干个字符,并把它们保存到参数 cbuf 指定的字符数组中。其中, off 指定在字符数组中开始保存数据的起始下标,len 指定读取的字符数。该方法返 回实际读取的字符数,如果返回 -1,则表示已经到了输入流的末尾 |
方法名及返回值类型 | 说明 |
---|---|
void write(int c) | 向输出流中写入一个字符 |
void write(char[] cbuf) | 把参数 cbuf 指定的字符数组中的所有字符写到输出流中 |
void write(char[] cbuf,int off,int len) |
把参数 cbuf 指定的字符数组中的若干字符写到输出流中。其中,off 指定 字符数组中的起始下标,len 表示元素个数 |
void write(String str) | 向输出流中写入一个字符串 |
void write(String str, int off,int len) |
向输出流中写入一个字符串中的部分字符。其中,off 指定字符串中的起 始偏移量,len 表示字符个数 |
append(char c) | 将参数 c 指定的字符添加到输出流中 |
append(charSequence esq) | 将参数 esq 指定的字符序列添加到输出流中 |
append(charSequence esq,int start,int end) |
将参数 esq 指定的字符序列的子序列添加到输出流中。其中,start 指定 子序列的第一个字符的索引,end 指定子序列中最后一个字符后面的字符 的索引,也就是说子序列的内容包含 start 索引处的字符,但不包括 end 索引处的字符 |
public class Test12 { public static void main(String[] args) { FileReader fr = null; try { fr = new FileReader("D:/myJava/HelloJava.java"); // 创建FileReader对象 int i = 0; System.out.println("D:\\myJava\\HelloJava.java文件内容如下:"); while ((i = fr.read()) != -1) { // 循环读取 System.out.print((char) i); // 将读取的内容强制转换为char类型 } } catch (Exception e) { System.out.print(e); } finally { try { fr.close(); // 关闭对象 } catch (IOException e) { e.printStackTrace(); } } } }如上述代码,首先创建了 FileReader 字符输入流对象 fr,该对象指向 D:\myJava\HelloJava.java 文件,然后定义变量 i 来接收调用 read() 方法的返回值,即读取的字符。在 while 循环中,每次读取一个字符赋给整型变量 i,直到读取到文件末尾时退出循环(当输入流读取到文件末尾时,会返回值 -1)。
public class Test13 { public static void main(String[] args) { Scanner input = new Scanner(System.in); FileWriter fw = null; try { fw = new FileWriter("D:\\myJava\\book.txt"); // 创建FileWriter对象 for (int i = 0; i < 4; i++) { System.out.println("请输入第" + (i + 1) + "个字符串:"); String name = input.next(); // 读取输入的名称 fw.write(name + "\r\n"); // 循环写入文件 } System.out.println("录入完成!"); } catch (Exception e) { System.out.println(e.getMessage()); } finally { try { fw.close(); // 关闭对象 } catch (IOException e) { e.printStackTrace(); } } } }如上述代码,首先创建了一个指向 D:\myJava\book.txt 文件的字符文件输出流对象 fw,然后使用 for 循环录入 4 个字符串,并调用 write() 方法将字符串写入到指定的文件中。最后在 finally 语句中关闭字符文件输出流。
请输入第1个字符串: 热点要闻 请输入第2个字符串: 个性推荐 请输入第3个字符串: 热搜新闻词 请输入第4个字符串: 本地看点 录入完成!
图 1 book.txt 文件内容
readLine()
方法,该方法返回包含该行内容的字符串,但该字符串中不包含任何终止符,如果已到达流末尾,则返回 null。readLine() 方法表示每次读取一行文本内容,当遇到换行(\n)、回车(\r)或回车后直接跟着换行标记符即可认为某行已终止。
public class Test13 { public static void main(String[] args) { FileReader fr = null; BufferedReader br = null; try { fr = new FileReader("D:\\myJava\\book.txt"); // 创建 FileReader 对象 br = new BufferedReader(fr); // 创建 BufferedReader 对象 System.out.println("D:\\myJava\\book.txt 文件中的内容如下:"); String strLine = ""; while ((strLine = br.readLine()) != null) { // 循环读取每行数据 System.out.println(strLine); } } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { fr.close(); // 关闭 FileReader 对象 br.close(); } catch (IOException e) { e.printStackTrace(); } } } }如上述代码,首先分别创建了名称为 fr 的 FileReader 对象和名称为 br 的 BufferedReader 对象,然后调用 BufferedReader 对象的 readLine() 方法逐行读取文件中的内容。如果读取的文件内容为 Null,即表明已经读取到文件尾部,此时退出循环不再进行读取操作。最后将字符文件输入流和带缓冲的字符输入流关闭。
D:\myJava\book.txt 文件中的内容如下: 热点要闻 个性推荐 热搜新闻词 本地看点
本文链接:http://task.lmcjl.com/news/11026.html