标签:写入文件 停止 有一个 记忆 close 失误 坚持 oid 加班
对于最近断断续续在看java基础,然后在看完视频后自己实操时,经常会忘记的在使用时的一些步骤。
FileWriter用于将内容写入文件,FileReader则是从文件中读取内容。使用这两个类的步骤是:
FileWriter
FileWriter的构造方法:public FileWriter(String filename){};
FileReader
public int read(){}:返回值为单个字符对应的ASCII值或者Unicode值
*每次调用都会读取下一个字符,如果没有字符了,则返回-1
注意:在调用读取文件内容的read()时,由于不知道文件中有多少个字符,所以一般读取采用循环来执行。不确定字符数,所以就用while循环,当得到-1的时候停止循环。
如: int ch;
while((ch = fr.read()) != -1){
System.out.println((char)ch);//强制转换为字符
}
*FileReader读取字符数组
调用read方法的另外一种重载形式:public int read(char[] buf){}:一次性读取整个字符数组的数据
*参数是一个字符数组,用来承载读取到的多个字符
*返回值代表的时数组中读取到的有效个数
示例代码: FileReader fr = new FileReader("text01.txt");
char[] cr = new char[2];//定义一个长度2的字符数组
int len;
while((len = fr.read(cr)) != -1){
String str = new String(cr,0.len);//因为获取到的是字符,所以将其转化位字符串输出。String()中传入字符数组,len为位数。
System.out.println(str);
}
运行结果:
BufferedWriter和BufferedReader,同样是对文件进行操作,一个是用于写文件一个是从文件中读取内容。
BufferedXXX和FileXXX的区别:
*BufferedXXX中有设立一个长度为8192的char[]字符数组当作缓冲区使用,性能更好
每次在写数据的时候,实际上就是不断地往缓冲区中添加字符,当把数组写满时就会写入到硬盘文件中(BufferedReader读取文件亦同理),如果数组没有写满,则等到写满才写入。
最终关闭close时,数组仍然没有写满,那么也会将数组中有的所有内容写入到文件中。
构造方法:public BufferedWriter(FileWriter fw){}:需要将FileWriter的对象作为参数传入,
示例:FileWriter fw = new FileWriter("text01.txt");
BufferedWriter bw = new BufferedWriter(fw);
*BufferedWriter额外提供了一个换行的方法,newLine();
public BufferedReader(FileReader fr){}:需要将FileReader的对象作为参数传入
与上面类似
BufferedReader中有一个读取一行的方法:public void readLine():读取一行字符串,不包含换行符
贴上几则小练习:
1.创建一个集合,往当中添加内容,然后将集合中的内容写入文件
这里也是被自己蠢到了!!
2.将硬盘文件中的内容读取到集合当中,输出集合内容
***这里之前试的时候,循环读取内容步骤写错,while(br.readLine()!=null){ String line = br.readLine(); list.add(line)},导致运行结果只输出了偶数位的值
晕死,被自己蠢哭~~~
3.将硬盘文件中的文本内容读取出来存放到集合,再倒序写入另外一个文本文件
这道因为上面两个的教训,总算没出多大失误,但也不排除自己靠着记忆,印象在敲,最后这道主要是循环要倒序读取出来。
第一篇博文,希望自己可以坚持下来把。其实一直怀疑自己真的不适合coding~,逻辑思维太差了,但是真的不甘心就当个普通的功能测试点点点,最近除了上班加班,偶然发现了几个不错的博客,
大概看了下,都是我看不懂的技术栈,都是名厂的大神。真是十足崇拜,果断收藏了~总之加油吧。趁现在还年轻,多吃点学习的苦为以后少吃生活的苦!!!
标签:写入文件 停止 有一个 记忆 close 失误 坚持 oid 加班
原文地址:https://www.cnblogs.com/kingxyt06/p/10128969.html