Java IO学习【3】IO中异常的抛出/单个字符读取文件、数组读取字符文件

         今天是2015/7/23早上 ,

      (1) 在前一个IO【2】程序中会发现对文件打开、读取字符数据、关闭文件都需要进行异常的声明,但在【2】中仅仅只是进行了声明,没有办法控制异常抛出时显示的信息,所以在这儿代码里要进行异常的环绕来控制出现异常时,自己定义抛出的信息。代码如下:

<span style="font-size:18px;">public static void main(String[] args) {
		
		FileWriter fw = null; //在try外面创建引用,在里面进行初始化
		try {
			
			fw = new FileWriter("x:\\demo.txt");

			fw.write("临危而安's demo" + LINE_SEPARATOR + "fight2015/7/22");//写入流中		
			
			//fw.flush();flush都有强制写出的作用,所以可以没有这个语句	 	
			
		} catch (IOException e) {
			System.out.println(e.toString());
		}finally{
			if(fw != null)
			try {
				fw.close();
			} catch (IOException e) {
				//code......
				throw new RuntimeException("关闭失败");
			}
		}				
	} </span>

并且在写代码时发现没有fw.flush()这个函数也可以成功的将数据写至文件中,这是因为close和flush都可以将缓冲区的流强行写至文件中,所以没有flush也可以。

      (2)前面写了如何写入文件,那么相对应的肯定有如何读取文件,读取文件有两种方式,一种是使用read方式么次读取一个字符,然后返回字符的码值;另一种方式是read(char[])方式,将字符读入一个char数组内,返回所读的字符个数。好了,具体代码如下:

读取一个字符的read方法:

public static void main(String[] args) throws IOException {
		// 需求:读取一个文本文件,将读取到的字符打印到控制台
		
		/*1.创建一个能读取字符数据的流对象
		 * 在创建读取流对象时,必须要明确被读取的文件。一定要明确该文件是存在的
		 * 用一个读取流关联一个已存在文件
		 */
		FileReader fr = new FileReader("demo.txt");
		
		//用reader方法读取字符,作为整数读取的字符,范围在0到65535之间,
		//如果已达流的末尾,则返回-1作为结束标示
		/*int ch = fr.read();
		System.out.println((char)ch); //返回asc11码表
		int ch1 = fr.read();
		System.out.println(ch1);
		System.out.println(fr.read());
		*/
		
		int ch = 0;
		while((ch = fr.read())!=-1){
			System.out.println((char)ch);
		}
		fr.close();
	}

read(char[])方式的代码:

public static void main(String[] args) throws IOException {
		// 需求:读取一个文本文件,将读取到的字符打印到控制台
		
		/*1.创建一个能读取字符数据的流对象
		 * 使用read(char[])读取文本文件数据。
		 * 先创建字符数组
		 */
		FileReader fr = new FileReader("demo.txt");
		char[] buf = new char[12];
		int len = fr.read(buf);    //将读的字符存储到数组中,同时将个数返回给len
		System.out.println(new String(buf));
		char[] buf = new char[3];
<span style="white-space:pre">		</span>int len = 0;
<span style="white-space:pre">		</span>while((len=fr.read(buf))!=-1){
<span style="white-space:pre">			</span>System.out.println(new String(buf,0,len));  //即使给出的数组大小不够,也可以不重复的读完
<span style="white-space:pre">		</span>}
		fr.close();
	}
哎,有点看不进去了,玩一伙儿球去。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值