1、俺当初学IO的时候犯了不少迷糊,网上有些代码也无法通过编译,甚至风格都很大不同,所以新手请注意: 1.本文代码较长,不该省略的都没省略,主要是因为作为一个新手需要养成良好的代码编写习惯 2.本文在linux下编译,类似于File.pathSeparator和File.separator这种表示方法是出于跨平台性和健壮性考虑 3.代码中有些操作有多种执行方式,我采用了方式1.方式2.的表述,只需轻轻解开注释便可编译 4.代码中并没有在主方法上抛出异常,而是分别捕捉,造成代码过长,如果仅是测试,或者不想有好的编程习惯,那你就随便抛吧 5.功能类似的地方就没有重复写注释了,如果新手看不懂下面的代码,
2、那肯定是上面的没有理解清楚字符流实例1:字符流的写入?123456789101112131415161718192021222324252627282930313233343536373839importjava.io.File;java.io.FileWriter;java.io.IOException;publicclassDemo staticvoidmain(String args ) /创建要操作的文件路径和名称/其中,File.separator表示系统相关的分隔符,Linux下为:/ Windows下为:String path = File.separator + home+ F
3、ile.separator + siu+ File.separator + workdemo.txt;/由于IO操作会抛出异常,因此在try语句块的外部定义FileWriter的引用FileWriter w = null;try/以path为路径创建一个新的FileWriter对象/如果需要追加数据,而不是覆盖,则使用FileWriter(path,true)构造方法w = newFileWriter(path);/将字符串写入到流中,rn表示换行想有好的w.write(Nerxious is a good boyrn);/如果想马上看到写入效果,则需要调用w.flush()方法w.flush
4、(); catch(IOException e) e.printStackTrace(); finally/如果前面发生异常,那么是无法产生w对象的 /因此要做出判断,以免发生空指针异常if(w != null) /关闭流资源,需要再次捕捉异常w.close();编译之后,在目录下面生成文件,并写入字符串实例2:字符流的读取4041424344454647484950515253545556575859606162636465666768697071727374java.io.FileReader;Demo2 FileReader r = null;r = newFileReader(path
5、);/方式一:读取单个字符的方式/每读取一次,向下移动一个字符单位inttemp1 = r.read();System.out.println(char)temp1);temp2 = r.read();System.out.println(char)temp2);/方式二:循环读取/read()方法读到文件末尾会返回-1/*while (true) int temp = r.read();if (temp = -1) break;System.out.print(char)temp);*/方式三:循环读取的简化操作/单个字符读取,当temp不等于-1的时候打印字符/*int temp = 0;
6、while (temp = r.read() != -1) /方式四:读入到字符数组char buf = new char1024;int temp = r.read(buf);/将数组转化为字符串打印,后面参数的意思是/如果字符数组未满,转化成字符串打印后尾部也许会出现其他字符/因此,读取的字符有多少个,就转化多少为字符串System.out.println(new String(buf,0,temp);/方式五:读入到字符数组的优化/由于有时候文件太大,无法确定需要定义的数组大小/因此一般定义数组长度为1024,采用循环的方式读入int temp = 0;while(temp = r.read(buf) !System.out.print(new String(buf,0,temp);if(r !r.close();编译之后的效果:实例3:文本文件的复制
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1