日常学习之字符流
今天自己写代码时需要一个大量得日志文件,所以想用流来模拟真实产生的数据,一般用字节流比较多一点,因为我这个是纯文本,所以用字符流也可以,不过早已忘光,所以又随便在网上搜集了一点资料来补充自己的知识库,这里只是一些浅显的认知,我刚开始也自己读了一点源码,究其还是利用字节流来读或者写,文章一会就简单提下。
- 对于Writer这个抽象类来说,其主要的方法如图所示:
- 当写纯文本时,可以利用FileWriter这个类来搞定,我们可以利用不同的重载方法来完成写文件这个操作,如下代码演示了三种写文件的方式:
public class TestFileWrite { public static void main(String[] args) { File file = new File("D:/lj/test4.dat"); Writer writer = null; try { writer = new FileWriter(file); //进行写的操作 String str = "李杰会越来越好!"; /* //方式一: //字符串--》字符数组,不存在编码 char[] chars = str.toCharArray(); writer.write(chars,0,chars.length); writer.flush();*/ /*//方式二 writer.write(str); writer.flush();*/ //方式三:利用append,类似于StringBuilder的appende方法,这个比write灵活一点 writer.append("李杰").append("加油"); writer.flush(); } catch (IOException e) { e.printStackTrace(); }finally { if (null!=writer){ try { writer.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
- 下面来展示我此次利用字符流来模拟生成的日志文件:
@Test public void create01() { try (FileWriter fw = new FileWriter("d:/mytst.log"); BufferedWriter writer = new BufferedWriter(fw)) { for (int i = 0; i < 9; i++) { String test = "13" + i + "\t" + 10 * (i + 1) + "\t" + "test" + "\t" + 20 * (i + 1) + "\t" + "mylog" + "\t" + 40 * (i + 1) + "\t" + "666"; writer.append(test); writer.newLine();//因为想要生成很多行,所以每写一行都进行换行操作 } writer.flush(); } catch (IOException e) { e.printStackTrace(); } }
效果图如图所示:
- 当然,也可以完整的利用字符流来进行复制纯文本的工作,如下代码所示(代码中利用到了字符缓冲流,能够提升读写速率)
public class Test01 { public static void main(String[] args) { try (BufferedReader br = new BufferedReader(new FileReader("d:/lj/test.dat")); BufferedWriter bw = new BufferedWriter(new FileWriter("d:/lj/test9999.txt")) ) { String line = null; while ((line = br.readLine()) != null) { bw.write(line); bw.newLine(); } bw.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
- 刚才提到自己随便读了一点源码,我刚开始接触java时,一点都不敢看源码,有啥不会的直接百度,现在慢慢学习自己先读读源码,实在不会在搜搜相关资料,慢慢增强自己的阅读源码能力,毕竟源码的代码风格有很多都是比较6的。
- 本文主要谈论了字符流的Writer,其实网上关于流这块介绍的知识点是在太多了,关键要自己学会整理,比如先按字节流与字符流来区分,然后再按输入流与输出流来区分等等,这样一来,思路就比较清晰一些。好了,本文就到这里了,有啥不足之处欢迎来扰,一起探讨~
FileWriter