黑马程序员技术交流社区
标题:
关于IOException
[打印本页]
作者:
梁清平
时间:
2012-5-16 20:35
标题:
关于IOException
//这是一个完整的流错误处理方式
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你好中国!");
为什么在文件中实现不了换行啊?
作者:
冯越
时间:
2012-5-16 20:46
亲~ 是的 是必须这样写的。
关与你下面的为什么没有换行是因为 你换行符打错了 应该是“\n你好中国!” 不是 "\\n你好中国"。
你在换行符前面又加了个转义符 所以你的输出结果是 \n你好中国!
作者:
申振华
时间:
2012-5-16 20:47
windows中环境中换行符 是 \r\n 要写成fw.write(" \\r\\n你好中国!"); 就ok了
作者:
袁錦泰
时间:
2012-5-16 20:57
本帖最后由 袁錦泰 于 2012-5-16 22:25 编辑
1.在日后的开发中会写得比这个更为复杂,就拿最后一个关闭流的处理来说:
finally
{
try
{
if(fw!=null)
fw.close();
}
catch(IOException e)
{
fw=null;//开发中在处理时会加上这句话,而不是单纯的打印异常信息
System.out.print(e.toString());
}
}
复制代码
2.你那句话本身以字符串打印,先不说你换行符在这里用的对与错,你在双引号内打印就是按照字符串输出,\\n是转移字符的书写格式,并不是换行符的书写格式,改为\r\n即可。然后针对换行符在不同操作系统下的写法说一下,在Windows系统里面的换行是/r/n,在Linux、Unix系统里面是\n,在代码中想要做出换行是不会像你这样写的,你可以利用装饰类将FileWriter进行装饰,然后再使用装饰类BufferedWriter的特有方法newlLine()进行换行;也可以使用System类中的getProperties()方法里面的系统属性集合(line.separator)对换行在不同系统下做出恰当的处理,更为准确的说是将换行做到跨平台,因为不同系统下对换行符的定义是不同的。
希望我的解释说明可以帮助你,如果还不是很清楚可以联系我!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2