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 如何初始化inputStream_Java_File_Inputstream - Fatal编程技术网

Java 如何初始化inputStream

Java 如何初始化inputStream,java,file,inputstream,Java,File,Inputstream,我正在尝试初始化一个InputStream,但它不允许我初始化。我已经能够初始化OutputStream public void readData(){ 字符串fileName=“clinicData.txt”; 扫描仪输入流; System.out.println(“文件“+fileName+”\n包含以下行:\n”); 试一试{ inputStream=新扫描仪(新文件(文件名)); }catch(filenotfounde异常){ System.out.println(“错误:打开文件”+

我正在尝试初始化一个
InputStream
,但它不允许我初始化。我已经能够初始化
OutputStream

public void readData(){
字符串fileName=“clinicData.txt”;
扫描仪输入流;
System.out.println(“文件“+fileName+”\n包含以下行:\n”);
试一试{
inputStream=新扫描仪(新文件(文件名));
}catch(filenotfounde异常){
System.out.println(“错误:打开文件”+文件名);
系统出口(0);
}
while(inputStream.hasNextLine()){
String line=inputStream.nextLine();
System.out.println(行);
}
inputStream.close();
}
上面的代码是我正在使用的部分,如果您需要我发布另一部分的outputStream,请告诉我。

您想这样做:

try (Scanner inputStream = new Scanner(new File(fileName))) {
    while (inputStream.hasNextLine()) {
        String line = inputStream.nextLine();
        System.out.println(line);
    }
} catch (FileNotFoundException e) {
    System.out.println("Error: opening the file " +fileName);
    System.exit(0);
}
  • 扫描仪输入流
    try
    块中初始化,但是,不能保证初始化成功,您稍后将尝试在
    while
    循环中访问此类实例,这将是错误的。在
    块内移动
    循环
  • Scanner
    自动关闭的
    ,因此您可以使用和省略
    inputStream.close()

您可以尝试在
FileInputStream
中获取文件,然后使用
扫描仪读取该文件,如下所示

try  
{  
    FileInputStream fis=new FileInputStream("clinicData.txt");       
    Scanner sc=new Scanner(fis);

    while(sc.hasNextLine())  
        {  
          System.out.println(sc.nextLine());
        }  
    sc.close(); 
}  
catch(IOException e)  
{  
    e.printStackTrace();  
}

嗯,您不是在初始化
InputStream
,而是在初始化
扫描仪。问题是如何用使用
InputStream
的代码替换此代码?还是打算使用
扫描仪
,但代码不起作用?如果是后者,到底是什么问题?你有错误吗?错误的结果?你应该正确命名以避免混淆。扫描仪和输入流是不同的东西。您还应该定义“它不允许我”,不要让我们猜测。您不是在尝试创建
输入流
,而是在创建
扫描仪
。你应该张贴你得到的错误;您的主要问题似乎是可变范围,因为您读取并关闭了初始化范围之外的扫描仪。您可以在这里找到答案:该程序无法工作,因为它是一个错误,我被告知同时使用扫描仪和inputStream