本文主要是介绍FileReader和FileWirter,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
显然,这是两种“字符流”,FileReader是“文件字符输入流”,FileWriter是“文件字符输出流”。与前一篇文章的FileInputStream和FileOutputStream非常类似
这是一个FileReader类的例子:
public class FileReaderTest01 {public static void main (String[] args) {FileReader fr = null;try {//创建文件字符输入流fr = new FileReader ("原文件地址");//写char[] chars = new char[512];int temp =0;while ((temp = fr.read (chars)) != -1) {//将char数组有效部分转换成字符串System.out.println (new String (chars, 0, temp));}} catch (FileNotFoundException e) {e.printStackTrace ();} catch (IOException e) {e.printStackTrace ();} finally {try {if (fr != null)fr.close ();} catch (IOException e) {e.printStackTrace ();}}}
}
与之前类似,当文件读取完之后,read方法会返回-1,利用这一点可以进行循环读取
下面再有一个FileWriter的例子:
public class FileWriterTest01 {public static void main (String[] args) {FileWriter fw = null;//创建文件字符输出流try {fw = new FileWriter (目标文件地址, true);//将char数组的一部分写入char[] chars = {'中', '华', '人', '民', '共', '和', '国', '万', '岁', '!', '=', '?'};fw.write (chars);//刷新fw.flush ();} catch (IOException e) {e.printStackTrace ();} finally {try {if (fw != null)fw.close ();} catch (IOException e) {e.printStackTrace ();}}}
}
其中在创建FileWriter对象时,构造方法的第二个参数是一个boolean类型,用来确定是覆盖文件还是在该文件后面追加,true就是追加,false是覆盖。
下面还有一个利用FileWriter和FileReader来实现文件复制的代码:
public class CopyFileReaderWriterTest {public static void main (String[] args) throws Exception {//创建流FileReader fr = new FileReader ("");FileWriter fw = new FileWriter ("");//边读边写char[] chars = new char[512]; // 每次读取512个字符,即1024个字节,即1kbint temp;while ((temp = fr.read (chars)) != -1) {fw.write (chars, 0, temp);}//刷新fw.flush ();//关闭流fw.close ();fr.close ();}
}
与利用FileInputStream和FileOutputStream来进行文件复制可以说是大同小异了。
这篇关于FileReader和FileWirter的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!