java字节流,文件输入流FileInputStream类介绍

KLQ 2020-08-20 15:00:30 java常见问答 4527

下面要给大家介绍的是和文件输入流FileInputStream类相关的内容,对于FileInputStream类你了解多少呢?一起来了解一下吧。

FileInputStream是Java流中比较常用的一种,它表示从文件系统的某个文件中获取输入字节,通过使用 FileInputStream可以访问文件中的一个字节、一批字节或整个文件。

创建FileInputStream类的对象的时候,假如,找不到指定的文件将拋出FileNotFoundException异常,这个异常必须捕获或声明拋出。

FileInputStream常用的构造方法的两种重载形式:

FileInputStream(File file)-通过打开一个到实际文件的连接来创建一个FileInputStream,这个文件通过文件系统中的File对象file指定。

FileInputStream(String name)-通过打开一个到实际文件的链接来创建一个FileInputStream,这个文件通过文件系统中的路径名name指定。

FileInputStream()两个构造方法的使用示例:

try
{
    // 以File对象作为参数创建FileInputStream对象
    FileInputStream fis1 = new FileInputStream(new File("F:/mxl.txt"));
    // 以字符串值作为参数创建FilelnputStream对象
    FileInputStream fis2 = new FileInputStream("F:/mxl.txt");
}
catch (FileNotFoundException e)
{
    System.out.println("指定的文件找不到!");
}

示例:

假设,有一个文件文件,下面使用FileInputStream类读取并输出该文件的内容。

具体代码:

public class Test10
{
    public static void main(String[] args)
    {
        File f = new File("D:/myJava/HelloJava.java");
        FileInputStream fis = null;
        try
        {
            // 因为File没有读写的能力,所以需要有个InputStream
            fis = new FileInputStream(f);
            // 定义一个字节数组
            byte[] bytes = new byte[1024];
            int n = 0; // 得到实际读取到的字节数
            System.out.println("D:\\myJava\\HelloJava.java文件内容如下:");
            // 循环读取
            while ((n = fis.read(bytes)) != -1)
            {
                String s = new String(bytes, 0, n); // 将数组中从下标0到n的内容给s
                System.out.println(s);
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            try
            {
                fis.close();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
    }
}

上述代码,在FileInputDemo类的main()方法中首先创建了一个File对象f,该对象指D:\myJava\HelloJava.java文件,接着使用FileInputStream类的构造方法创建了一个FileInputStream对象fis,并声明一个长度为1024的byte类型的数组,然后使用 FileInputStream类中的read()方法将HelloJava.java文件中的数据读取到字节数组bytes中,并输出该数据,最后在finally语句中关闭FileInputStream输入流。

下面是HelloJava.java文件的原始内容:

HelloJava.java文件的原始内容

下面是运行程序后的输出内容:

D: \myJava\ HelloJava.java文件内容如下:
/*
 *第一个java程序
 */
public class HelloJava
{
    // 这里是程序入口
    public static void main(String[] args)
    {
        // 输出字符串
        System.out.println("你好 Java");
    }
}

注意了:FileInputStream类重写了父类InputStream中的read()方法、skip()方法、available()方法和close()方法,不支持mark()方法和reset()方法。

以上的内容你都清楚了吗?更多相关知识,请继续关注奇Q工具网的java入门栏目来进行了解吧。

推荐阅读:

java字节数组输入流ByteArrayInputStream类介绍

java字节数组输出流ByteArrayOutputStream类介绍

java字节流,字节输入流,InputStream介绍