A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梁清平 中级黑马   /  2012-5-16 20:35  /  1715 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//这是一个完整的流错误处理方式
import java.io.*;

class FileWriterDemo
{
        public static void main(String[] args)
        {
                FileWriter fw = null;
                try
                {
                        fw = new FileWriter("demo.txt");
                        fw.write("adfs");
                        //fw.flush();
                        //fw.close();                       
                }
                catch(IOException e)
                {
                        System.out.print(e.toString());
                }
                finally
                {
                                try
                        {
                                if(fw!=null)
                                fw.close();                       
                        }
                        catch(IOException e)
                        {
                                System.out.print(e.toString());
                        }

                }
        }
}
这是一个最简单的IO相关程序,处理这个Exception就这么麻烦了,难道实践也是这样做吗?请问有没有更好的方式啊?
另外,下面代码中
fw = new FileWriter("demo.txt",true);
fw.write(" \\n你好中国!");
为什么在文件中实现不了换行啊?                       

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
亲~ 是的 是必须这样写的。
关与你下面的为什么没有换行是因为 你换行符打错了  应该是“\n你好中国!” 不是  "\\n你好中国"。
你在换行符前面又加了个转义符 所以你的输出结果是  \n你好中国!

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
windows中环境中换行符  是 \r\n  要写成fw.write(" \\r\\n你好中国!");  就ok了
回复 使用道具 举报
本帖最后由 袁錦泰 于 2012-5-16 22:25 编辑

1.在日后的开发中会写得比这个更为复杂,就拿最后一个关闭流的处理来说:
  1. finally
  2.                 {
  3.                                 try
  4.                         {
  5.                                 if(fw!=null)
  6.                                 fw.close();                       
  7.                         }
  8.                         catch(IOException e)
  9.                         {
  10.                                 fw=null;//开发中在处理时会加上这句话,而不是单纯的打印异常信息
  11.                                 System.out.print(e.toString());
  12.                         }

  13.                 }
复制代码
2.你那句话本身以字符串打印,先不说你换行符在这里用的对与错,你在双引号内打印就是按照字符串输出,\\n是转移字符的书写格式,并不是换行符的书写格式,改为\r\n即可。然后针对换行符在不同操作系统下的写法说一下,在Windows系统里面的换行是/r/n,在Linux、Unix系统里面是\n,在代码中想要做出换行是不会像你这样写的,你可以利用装饰类将FileWriter进行装饰,然后再使用装饰类BufferedWriter的特有方法newlLine()进行换行;也可以使用System类中的getProperties()方法里面的系统属性集合(line.separator)对换行在不同系统下做出恰当的处理,更为准确的说是将换行做到跨平台,因为不同系统下对换行符的定义是不同的。

希望我的解释说明可以帮助你,如果还不是很清楚可以联系我!

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马