IO流的补充: 字符流FileReader 和FileWriter BufferedReader和BufferedWriter的用法

谁借莪1个温暖的怀抱¢ 2023-07-25 09:58 39阅读 0赞

上次只写了字节流的操作,现在吧字符流的也补上

同样FileReader和BuuferedReader是读取文件到内存,是属于输入流

FileWriter和BufferedWriter是从内存输出到文件中,属于输出流(都是以内存为参照)

看下FileWriter和FileReader的用法

  1. import java.io.*;;
  2. /**演示文件字符流
  3. *
  4. * @author Wang Yanming
  5. *
  6. */
  7. public class Demo1 {
  8. public static void main(String[] args) {
  9. //文件取出字符流对象(输入流)
  10. FileReader fr = null;
  11. //写入到文件(输出流)
  12. FileWriter fw = null;
  13. try {
  14. //创建一个file对象
  15. fr = new FileReader("c:\\test.txt");
  16. fw = new FileWriter("d:\\vvv.txt");
  17. //读入到内存
  18. char []c= new char[1024];
  19. int n = 0;//记录实际读取的字符数
  20. while((n=fr.read(c))!=-1)
  21. {
  22. // System.out.println(c);
  23. /*这样又可以打印出来,但是有的情况下会乱码,
  24. * 因为c的大小事1024,如果不到1024就打印,会把后面的也打印出来*/
  25. String s = new String(c,0,n);//采用这种形式
  26. System.out.print(s);//这里不要写换行println
  27. // fw.write(c);
  28. /*当然这样写会把不到1024的那部分数据也写进去 会导致在记事本中乱码,所以建议按下面写*/
  29. fw.write(c, 0, n);
  30. }
  31. } catch (Exception e) {
  32. // TODO: handle exception
  33. e.printStackTrace();
  34. }
  35. finally
  36. {
  37. try
  38. {
  39. fr.close();//如果不关闭会导致文件写不进去
  40. fw.close();
  41. } catch (Exception e) {
  42. // TODO: handle exception
  43. e.printStackTrace();
  44. }
  45. }
  46. }
  47. }

看下BufferedReader和BufferedWriter的用法

  1. import java.io.*;
  2. /**演示缓冲字符流案例
  3. * BufferedReader 和BufferdWriter
  4. * @author Wang Yanming
  5. *
  6. */
  7. public class Demo1 {
  8. /**
  9. * @param args
  10. */
  11. public static void main(String[] args) {
  12. // TODO Auto-generated method stub
  13. BufferedReader br = null;
  14. BufferedWriter bw = null;
  15. try {
  16. // br = new BufferedReader("c:\\test.txt");
  17. //直接诶按照上面写会出错,因为BufferdReader只认识Reader,
  18. //而FileReader又是reader的子类先创建一个FileReader对象,
  19. FileReader fr = new FileReader("c:\\test.txt");//问题:读取d:\\ss.txt,不能输出可以写
  20. FileWriter fw = new FileWriter("d:\\好似.txt");
  21. br = new BufferedReader(fr);
  22. bw = new BufferedWriter(fw);
  23. String s="";
  24. while((s=br.readLine())!=null)
  25. {
  26. System.out.println(s);
  27. //这里要写println 因为是按照行读取,不会读换行符,可因参照API,
  28. //所以如果不写ln的话就不会换行
  29. /**以下是输出到磁盘**/
  30. s = s+"\r\n";//因为本身是换行的 ,所以要加上"\r\n"
  31. bw.write(s);
  32. }
  33. } catch (Exception e) {
  34. // TODO: handle exception
  35. e.printStackTrace();
  36. }
  37. finally
  38. {
  39. try {
  40. br.close();
  41. bw.close();
  42. } catch (IOException e) {
  43. // TODO Auto-generated catch block
  44. e.printStackTrace();
  45. }
  46. }
  47. }
  48. }

发表评论

表情:
评论列表 (有 0 条评论,39人围观)

还没有评论,来说两句吧...

相关阅读