四川省建设厅资格注册中心网站,做游戏网站赚钱么,凡科h5尺寸,网络商城运营Java IO流 文章目录Java IO流什么是IO流InputStreamFlieInputStream示例OutputStream示例字符的读取与写入READER方法WRITER方法利用Scanner和PrintWriter简化字符的读写ScannerPrintWriter什么是IO流
前面我们介绍了Java中对文件的操作以及file类的了解#xff0c;但是file类…Java IO流 文章目录Java IO流什么是IO流InputStreamFlieInputStream示例OutputStream示例字符的读取与写入READER方法WRITER方法利用Scanner和PrintWriter简化字符的读写ScannerPrintWriter什么是IO流
前面我们介绍了Java中对文件的操作以及file类的了解但是file类只能对文件信息进行操作创建获取删除列表重命名。无法进行文件的读取和写入。
在Java中I/O操作是指对文件进行输入Input/输出Output操作。 Java所有的I/O机制都是基于数据流进行输入输出这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。
Java中针对Input和Output提供了2个抽象类 InputStream 输入流把文件数据读取到内存 OutputStream输出流把数据从内存输出到文件中 在系统中有很多种的文件类型一般分为 文本文件和二进制文件
Java分别对这两种文件类型提供了相应的方法对文件进行读写。 InputStream
常见的方法
intread()读取一个字节的数据读完返回-1intread(byte[] b)最多读取b.length个字节的数据intread(byte[] b,int off,int len)最多读取len-off个字节数据voidclose()关闭字节流
InputStream只是一个抽象类要使用还需要具体的实现类。关于InputStream的实现类很多这里简单的介绍一下FileInputStream
FlieInputStream
FileInputStream(File file)利用File文件构造文件输入流FileInputStream(File file)利用文件路径创建输入流
示例
利用文件路径读文件内容
public static void main(String[] args) throws IOException {// 创建一个输入流读取文件内容FileInputStream inputStreamnew FileInputStream(d:/JAVA/temp/test/aaa.txt);//用一个byte数组来接收每次读取的内容扩大缓冲区容量byte[] bytesnew byte[1024];//读取文件中的数据while (true){//获取每次读取的长度int leninputStream.read(bytes);if (len-1){break;}//打印读取到的内容for (int i 0; i len; i) {System.out.println((char) bytes[i]);}//关闭流inputStream.close();}
}OutputStream
voidwrite(int b)写入要给字节的数据voidwrite(byte[]b)将b 这个字符数组的全部数据写到os中intwrite(byte[]b,int off,int len)将b数组中从off开始把数据写到os中一个写len个voidclose()关闭流voidflush()刷新缓冲区将数据从缓冲区写入文件
在计算机系统中硬件之间的传输速度是很慢的大量的OutputStream操作会使操作时间大大加长因此在写入数据时会将写入数据暂时存放在内存的一个指定的区域里一般称为缓冲区直到缓冲区满了或者其他条件时才将缓冲区的数据写入到目标文件中。但有可能会造成一部分数据遗留到缓冲区里因此调用flush方法将数据刷到文件中。
示例
public static void main(String[] args) throws IOException {FileOutputStream outputStreamnew FileOutputStream(d:/JAVA/temp/test/aaa.txt);outputStream.write(97);outputStream.write(98);outputStream.write(99);//刷新缓冲区outputStream.flush();outputStream.close();
}字符的读取与写入
READER方法
public static void main(String[] args) throws IOException {FileReader readernew FileReader(d:/JAVA/temp/test/aaa.txt);while (true){int datareader.read();//返回-1表示读取结束if (data-1){break;}System.out.println(data);}reader.close();
}WRITER方法
public static void main(String[] args) throws IOException {FileWriter writernew FileWriter(d:/JAVA/temp/test/aaa.txt);writer.write(123\n);writer.write(哈喽);//刷新缓冲区writer.flush();//关闭流writer.close();
}利用Scanner和PrintWriter简化字符的读写
上述例子中InputStream、OutputStream对字符类型文件进行读取是非常麻烦的所以用Scanner类和PrintWriter类进行简化
Scanner
public static void main(String[] args) throws IOException {FileInputStream inputStreamnew FileInputStream(d:/JAVA/temp/test/aaa.txt);//借助Scanner简化字符的读操作Scanner scannernew Scanner(inputStream,UTF-8);while (true){if (!scanner.hasNextLine()){break;}//获取数据String nestscanner.nextLine();System.out.println(nest);}scanner.close();inputStream.close();
}PrintWriter
public static void main(String[] args) throws IOException {FileOutputStream outputStreamnew FileOutputStream(d:/JAVA/temp/test/aaa.txt);PrintWriter writernew PrintWriter(outputStream);writer.println(你好世界);writer.println(哈哈);writer.println(hello world);writer.printf(%s:%d\n,单价,5);//强制刷新缓存writer.flush();writer.close();outputStream.close();
}