FileWriterDemo1
package IO; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import org.junit.Test; public class FileWriterDemo1 { // 类 FileWriter的方法全是继承的! private static final String LINE_SEPARATOR = System.getProperty("line.separator"); public void method11() { /* public int read(char[] cbuf, int offset, int length) throws IOException将字符读入数组中的某一部分。 类 Reader 中的 read cbuf - 目标缓冲区 offset - 从其处开始存储字符的偏移量 length - 要读取的最大字符数 返回:读取的字符数,如果已到达流的末尾,则返回 -1 抛出: IOException - 如果发生 I/O 错误 */ } @Test public void method10() throws IOException { /*public int read(char[] cbuf) throws IOException将字符读入数组。 在某个输入可用、发生 I/O 错误或者已到达流的末尾前, 此方法一直阻塞。 参数: cbuf - 目标缓冲区 返回: 读取的字符数,如果已到达流的末尾,则返回 -1 抛出: IOException - 如果发生 I/O 错误*/ //abc.txt放在src目录下,抛异常:系统找不到指定文件 //abc.txt放在src\IO包下,仍然抛异常:系统找不到指定文件 //千万注意:abc.txt必须放在该工程的根目录下面: FileReader fr=new FileReader("abc.txt"); char[] buf=new char[3]; int length=0; while((length=fr.read(buf))!=-1){ System.out.print(new String(buf, 0, length)); } //E:\javase\webwork\source_code\abc.txt //意思就是:abc.txt 位于java工程的根目录下面~ } @Test public void method9() throws IOException { // 用Reader中的read方法读取字符(单个单个地读)(不提倡) /* public int read() throws IOException读取单个字符。 覆盖: 类 Reader 中的 read 返回: 读取的字符,如果已到达流的末尾,则返回 -1 */ FileReader fr=new FileReader("abc.txt"); //单个单个地读(不提倡) int ch=0; while ((ch=fr.read())!=-1) { System.out.print((char)ch); } //E:\javase\webwork\source_code\abc.txt //意思就是:abc.txt 位于java工程的根目录下面~ } @Test public void method8() { // IOE异常处理机制 FileWriter fw=null; try { //FileNotFoundException: k:\abc.txt (系统找不到指定的路径。) //fw=new FileWriter("k:\\abc.txt"); //会自动在java工程的根目录创建文档 //如果文件已存在,会强行覆盖~ fw=new FileWriter("abcd.txt"); // System.getProperty("line.separator"); fw.write("abc"+LINE_SEPARATOR+"中国"); //换行方法4,使用\n\r回车换2行! } catch (IOException e) { e.printStackTrace(); }finally{ try { fw.close(); } catch (IOException e) { //底层问题,解决不了,只有抛~ throw new RuntimeException("关闭失败!"); } } } //换行方法5,使用环境变量换行 @Test public void method7() throws IOException { //会自动在java工程的根目录创建文档 //如果文件已存在,会强行覆盖~ FileWriter fw=new FileWriter("abcd.txt"); // System.getProperty("line.separator"); fw.write("abc"+LINE_SEPARATOR+"中国");//换行方法4,使用\n\r回车换2行! fw.close(); } @Test public void method5() throws IOException { //换行方法3 FileWriter fw=new FileWriter("abc.txt"); fw.write("abc\r\n中国");//换行方法3,使用\r\n回车换行! fw.close(); //注意 windows使用\n\r \n \r都无法换行,唯有\r\n } @Test public void method2() throws IOException { // append,true 会在后面加入文本! FileWriter fw=new FileWriter("abc.txt", true); fw.write("abc中国"); fw.close(); //操作已经关闭的流无效!IOException //fw.write("abc中国");//操作已经关闭的流无效!IOException } @Test public void method1() throws IOException { /* 从类 java.io.OutputStreamWriter 继承的方法 close, flush, getEncoding, write, write, write 从类 java.io.Writer 继承的方法 append, append, append, write, write 从类 java.lang.Object 继承的方法 clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait */ //默认在java工程的根目录:E:\javase\ework\source_code FileWriter fw=new FileWriter("abc.txt"); fw.write("abc");//3字节 fw.write("中国");//现在是7字节,1个汉字占两个字节 fw.flush();//默认关流的时候,会自动flush (或者缓冲区8K满的时候) fw.close(); } }未完待续...