filereader-FileReader fr = null; 为什么要先定义fr为空置

问题描述

FileReader fr = null; 为什么要先定义fr为空置

import java.io.*;
public class TestFileReader {
public static void main(String[] args) {
FileReader fr = null;
int c = 0;
try {
fr = new FileReader("d:javaTestFileReader.java");
int ln = 0;
while ((c = fr.read()) != -1) {
//char ch = (char) fr.read();
System.out.print((char)c);
//if (++ln >= 100) { System.out.println(); ln = 0;}
}
fr.close();
} catch (FileNotFoundException e) {
System.out.println("找不到指定文件");
} catch (IOException e) {
System.out.println("文件读取错误");
}

}
}

解决方案

有些情况下赋值了null就不会包变量未初始化了
http://zhidao.baidu.com/link?url=IPm8OXUs5QluOBQXD2PJ0vfO32pLb8U8CPkURSHWM8nUi71xMRd4ErOy7wiO0KgWMsYLFjxZvSLwQpnS8ZmivK

解决方案二:

这不是必须的。
FileReader fr; 这样也可以。

解决方案三:

给变量一个初始值这是一个好的编码习惯。这里
FileReader fr = null;
fr = new FileReader("d:\java\TestFileReader.java");
也可以写成一行
FileReader fr = new FileReader("d:\java\TestFileReader.java");
两者执行效率和功能等价
而且看起来fr也可以定义在try块中

解决方案四:

定义时赋初值是编程建议的风格,但是只是建议,不是强制要求。这样做,只是好的习惯。

解决方案五:

这段代码中是没必要加"=null"的。不过如果想在try-catch块之外继续使用变量fr的话,则是必须先赋初值的。Java编译器会对代码进行静态分析,以避免任何可能的不赋值就使用的情况。这个例子中,如果try中的代码出现了异常,有可能导致fr=new FileReader(...)没有执行,从而在try-catch之后的代码中就没法使用fr了。其实也可以在try-catch之后加个finally块,并在其中给fr赋初值:
finally{
fr=null;
}

时间: 2024-10-01 06:37:53

filereader-FileReader fr = null; 为什么要先定义fr为空置的相关文章

马士兵J2SE-第八章-流

  访问文件 package com.zzk.test; import java.io.*; public class test { public static void main(String[] args) { int b=0; FileInputStream in=null; try { in=new FileInputStream("D:\\test\\a\\zzk.txt"); }catch (FileNotFoundException e) { System.out.pri

C# DataGridView 导出 Excel(根据Excel版本显示选择不同后缀格式xls或xlsx)

/// <summary> /// DataGridView导出至Excel,解决问题:打开Excel文件格式与扩展名指定格式不一致 /// </summary> /// <param name="dataGridView">数据源表格</param> /// <param name="isShowExcle">导出时是否显示excel界面</param> /// <returns>

filereader-java FileReader使用的时候不能正确的显示中文字符,希望大牛帮忙看看

问题描述 java FileReader使用的时候不能正确的显示中文字符,希望大牛帮忙看看 下面是我的源代码,我用了下面几种方式进行编辑,运行的结果都有乱码,我真是想不明白了,请大牛帮我看看. 第一种方式编译 E:java8>javac -encoding utf-8 TestFileReader.java 第二种方式编译 E:java8>javac -encoding gbk TestFileReader.java 第三种方式编译 E:java8>javac -encoding gb2

InputStreamReader 和FileReader的区别及InputStream和Reader的区别_java

首先给大家介绍InputStreamReader 和FileReader的区别,具体内容如下所示: InputStreamReader 和 BufferedReader .其中最重要的类是 InputStreamReader ,它是字节转换为字符的桥梁. 你可以在构造器重指定编码的方式,如果不指定的话将采用底层操作系统的默认编码方式,例如 GBK 等. FileReader 与 InputStreamReader 涉及编码转换 ( 指定编码方式或者采用 os 默认编码 ) ,可能在不同的平台上出

FileReader读取数据方法(二)

package cn.io; //FileReader读取数据方法(二) //注意: //(1)FileReader的read( )方法,每次只读取单个字符.当读到末尾时返回-1 //(2)关闭流的顺序:后开的先关 //(3)之所以把FileReader fr = null和FileWriter fw = null; // 是因为它们是全局的,若在try里面这么写,那么在finally里就无法识别 //(4)若要输出单个的字符,那么在sys的时候一定要强转,因为返回的是字符对应的数字!!! im

FileReader读取数据方法(一)

package cn.io; //FileReader读取数据方法(一) //注意: //(1)FileReader的read(char [] cbuf)方法,返回的是读取的个数 // 若读取对象很大,则已经读了1024时那么就将缓存数组的东西写入到copyhao.txt,使其清空然后继续复制的过程. // 最后总会出现装一次不满1024的情况 //(2)关闭流的顺序:后开的先关 //(3)之所以把FileReader fr = null和FileWriter fw = null; // 是因为

File, FileReader 和 Ajax 文件上传实例分析(php)_javascript技巧

File FileReader 可以干什么? Ajax文件上传例子 FileReader 对象可以读取文件的 Base64编码数据(readAsDataURL),2进制字符串(readAsBinaryString),文本(readAsText)并且都是异步的. 对了,Email拖拽附件上传就可以利用 FileReader 配合 Ajax 完成. File 对象 File对象可以从 input[type=file].files 数组,和拖拽事件 event.dataTransfer.files 中

javascript结合fileReader 实现上传图片_javascript技巧

关于File API这里就不详细解释了,小伙伴们自行度娘吧,来我们就要利用文件句柄来读取文件内容,这是通过FileReader来实现的,通过FileReader接口,我们可以异步地将文件内容加载到内存中,赋予某个js变量. 复制代码 代码如下: function getImgSrc(target, callback) {     if (window.FileReader) {         var oPreviewImg = null, oFReader = new window.FileR

JAVA之旅(二十四)——I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习

JAVA之旅(二十四)--I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习 JAVA之旅林林总总也是写了二十多篇了,我们今天终于是接触到了I/O了.如果你初学,不懂IO流,你可以从前往后慢慢看,但是你工作了一段时间你会发现,流的使用场景以及技术点是非常的强硬的,我们势必要掌握这个知识点,如果你觉得翻阅API比较鼓噪,看视频得不到精髓,看书看不到要点,你就跟随我的JAVA之旅,一起去探索吧! 一.I/O概述 I/O全名:Input Output