在Java中的java.io包是什么?其中的流又是什么?而它们在Java中又有着什么样的功能?不知道?别担心,今天小编将为大家带来大数据编程入门:Java Stream、File及IO这篇文章。
一、Java 流(Stream)、文件(file)和IO的概念
java.IO包几乎包含了操作输入和输出所需的所有类,所有这些流类都表示输入源和输出目标。
java.io包中的流支持多种格式,如基本类型、对象、本地化字符集等。
一个流可以理解为一个数据的序列,输入流从一个源读取数据,输出流将数据写入一个目标。
Java为I/O提供了强大而灵活的支持,使其在文件传输和网络编程中得到更广泛的应用。
二、读取控制台输入
Java的控制台输入由Sy完成。
要获取一个绑定到控制台的字符流,可以在BufferedReader对象中包装sy以创建字符流。
以下是创建BufferedReader的基本语法:
BufferedReader br = new BufferedReader(new
InputStreamReader(Sy));
创建BufferedReader对象之后,我们可以使用read()方法从控制台读取一个字符,或者使用readLine()方法读取一个字符串。
三、从控制台读取多字输入
要从BufferedReader对象读取字符,要使用read()方法,其语法如下:
int read( ) throws IOException
每次调用read()方法时,它都从输入流中读取一个字符并将其作为整数值返回。当流结束时返回-1。此方法引发IOException。
以下的示例程序中使用了read()方法从控制台不断读取字符直到用户输入q。
运行结果:
四、从控制台读取字符串
从标准输入读取字符串需要BufferedReader的readLine()方法。
其一般格式如下:
String readLine( ) throws IOException
以下的示例程序读取和显示字符行直到你输入了单词"end"。
运行结果:
五、控制台输入
控制台的输出由print()和println()完成。这些方法由PrintStream和system类定义。Out是对类对象的引用。
printstream继承OutputStream类并实现write()方法。这样,write()还可以使用控制台来编写操作。
printstream定义write()的最简单格式如下:
void write(int byteval)
该方法将 byteval 的低八位字节写到流中。
示例:
以下的示例程序中使用write()把字符“A”和紧跟着的换行输出到屏幕:
运行结果:
六、读写文件
如前所述,流被定义为数据序列,输入流用于从源读取数据,输出流用于将数据写入目标。
下面是描述输入和输出流的类层次结构图:
七、FileInputStream
该流用于从文件读取数据,并且可以使用关键字new创建其对象。
创建对象可以有几种构造方法。
可以使用字符串类型文件名创建输入流对象来读取文件:
InputStream f = new FileInputStream("C:/java/hello");
还可以使用文件对象创建输入流对象来读取文件,我们首先需要使用File()方法创建一个文件对象:
File f = new File("C:/java/hello");
InputStream in = new FileInputStream(f);
创建InputStream对象后,可以使用以下方法读取流或执行其他流操作。
方法 | 描述 |
public void close() throws IOException{} | 关闭文件输入流并释放与该流关联的所有系统资源,抛出IOException异常。 |
protected void finalize()throws IOException {} | 此方法清除与文件的连接,确保在不再引用文件输入流时调用close方法,抛出IOException异常。 |
public int read(int r)throws IOException{} | 此方法从InputStream对象读取指定的数据字节,返回整数值。返回数据的下一个字节,如果已到达结尾,则返回-1。 |
public int read(byte[] r) throws IOException{} | 这个方法从输入流中读取r.length的字节。返回读取的字节数。如果是文件的结尾,则返回-1。 |
public int available() throws IOException{} | 返回在此输入流上调用的下一个方法可以不阻塞地从此输入流读取的字节数,返回整数值。 |
八、FileOutputStream
此类用于创建文件并向其中写入数据。
如果在流打开文件进行输出之前目标文件不存在,则流将创建该文件。
有两种构造方法可用于创建FileOutputStream对象。
使用字符串类型文件名创建输出流对象:
OutputStream f = new FileOutputStream("C:/java/hello")
还可以使用文件对象创建输出流来写入文件,我们首先需要使用file()方法创建一个文件对象:
File f = new File("C:/java/hello");
OutputStream fOut = new FileOutputStream(f);
创建OutputStream 对象后,可以使用以下方法来写入流或者进行其他的流操作。
方法 | 描述 |
public void close() throws IOException{} | 关闭此文件输入流,释放与该流相关的所有系统资源,并抛出IOException异常。 |
protected void finalize()throws IOException {} | 此方法清除与文件的连接,确保在不再引用文件输入流时调用close方法,抛出IOException异常。 |
public void write(int w)throws IOException{} | 这个方法把指定的字节写到输出流中。 |
public void write(byte[] w) | 把指定数组中w.length长度的字节写到OutputStream中。 |
示例:
以下是一个演示 InputStream 和 OutputStream 用法的例子:
以上程序首先创建文件,并将给定的数字以二进制形式写入文件,并同时将其输出到控制台。
因为上面的代码是用二进制代码编写的,所以可能有一些乱码了,您可以使用以下代码示例解决乱码问题:
九、Java中的目录
1、创建目录
file类中有两种方法可用于创建文件夹:
① mkdir()方法创建一个文件夹。如果成功,则返回true;如果失败,则返回false。失败表示文件对象指定的路径已存在,或者由于整个路径不存在而无法创建文件夹。
② mkdirs()方法创建一个文件夹及其所有父文件夹。
以下示例创建文件夹/tmp/user/Java/bin:
2、读取目录
目录实际上是一个文件对象,其中包含其他文件和文件夹。
如果您创建了一个文件对象并且它是一个目录,那么调用isDirectory()方法将返回true。
可以对对象调用list()方法来提取它包含的文件和文件夹列表。
下面的示例演示如何使用list()方法检查文件夹的内容:
运行结果:
3、删除目录或文件
可以使用java.io.File.delete()方法删除文件。
下面的代码将删除目录/tmp/java/,需要注意的是,删除目录时,必须确保目录中没有其他文件可以正确删除,否则将无法删除。
测试目录结构:
以上就是关于大数据编程入门:Java Stream、File及IO的全部内容了,希望这篇文章可以帮助到大家~