Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 初始化FileInputStream_Java_File_Fileinputstream - Fatal编程技术网

Java 初始化FileInputStream

Java 初始化FileInputStream,java,file,fileinputstream,Java,File,Fileinputstream,为什么要我初始化变量fin 试图关闭文件时 fin.close(); 我打赌这与生成编译器错误的代码不完全相同。几乎可以肯定,您在try-catch-finally块之外声明了变量,但在try块内初始化了变量,这意味着该变量可能不会在发生编译器错误的catch或finally块的上下文中初始化 例如: FileInputStream fin; try { File f = new File("C:/Users/NetBeansProjects/QuestionOne/input.txt"

为什么要我初始化变量fin

试图关闭文件时

fin.close();

我打赌这与生成编译器错误的代码不完全相同。几乎可以肯定,您在try-catch-finally块之外声明了变量,但在try块内初始化了变量,这意味着该变量可能不会在发生编译器错误的catch或finally块的上下文中初始化

例如:

FileInputStream fin;
try {
   File f = new File("C:/Users/NetBeansProjects/QuestionOne/input.txt");
   fin = new FileInputStream(f);
} finally {
   //you cannot be sure fin is initialized
   fin.close(); //compiler error
}
如果您使用的是JDK 7,那么最好的方法可能是使用try with resources来处理流的关闭:

File f = new File("C:/Users/NetBeansProjects/QuestionOne/input.txt");
try(FileInputStream fin=new FileInputStream(f)) {
    //some input stream handlung here
}catch(IOException e){...} 

我打赌这与生成编译器错误的代码不完全相同。几乎可以肯定,您在try-catch-finally块之外声明了变量,但在try块内初始化了变量,这意味着该变量可能不会在发生编译器错误的catch或finally块的上下文中初始化

例如:

FileInputStream fin;
try {
   File f = new File("C:/Users/NetBeansProjects/QuestionOne/input.txt");
   fin = new FileInputStream(f);
} finally {
   //you cannot be sure fin is initialized
   fin.close(); //compiler error
}
如果您使用的是JDK 7,那么最好的方法可能是使用try with resources来处理流的关闭:

File f = new File("C:/Users/NetBeansProjects/QuestionOne/input.txt");
try(FileInputStream fin=new FileInputStream(f)) {
    //some input stream handlung here
}catch(IOException e){...} 

因为您更可能在函数内部使用此代码段,而函数内部的变量不会自动初始化,因为它们是实例变量。如果fin=新文件输入流F;抛出一个异常,我认为您已完成fin.close;在finally语句中,但您没有放入整个代码,编译器不知道哪个是fin的值以关闭它。

因为您更可能在函数内部使用此代码段,而函数内部的变量不会自动初始化,因为它们是实例变量。如果fin=新文件输入流F;抛出一个异常,我认为您已完成fin.close;在finally语句中,但您没有放入整个代码,编译器不知道fin的值是什么,因此无法关闭它。

fin.close在哪里?是您的fin=新文件输入流F;是否存在于某些IF/ELSE块中?另外,为什么不写FileInputStream fin=newfileinputstreamc:/Users/NetBeansProjects/QuestionOne/input.txt;这是你的真实代码吗?我不认为它反映了您实际正在做的事情。。。{…}Hmmmm使用null初始化fin,一切正常。。。!我想你是在给fin打电话在最后一个街区的什么地方fin.close在哪里?是您的fin=新文件输入流F;是否存在于某些IF/ELSE块中?另外,为什么不写FileInputStream fin=newfileinputstreamc:/Users/NetBeansProjects/QuestionOne/input.txt;这是你的真实代码吗?我不认为它反映了您实际正在做的事情。。。{…}Hmmmm使用null初始化fin,一切正常。。。!我想你在最后一个街区给fin打电话谢谢!对,谢谢!没错,没错,我不知道这就是原因!谢谢。那是真的,我不知道那是原因!谢谢