-
2021-03-04 09:39:19
流相关e69da5e887aa3231313335323631343130323136353331333363393133资源
流相关资源一般遵循:
1)先开后关,先开的输入流,再开的输出流,通过读取输入流写入输出流中,那么应该先关输出流,再关输入流,但是一般关闭输入输出流操作都是在读写完成后的finally中执行的,所以即使先关输入流,再关输出流也不会任何问题,因为读写操作没有进行了。
2)先关外层,再关内层。如BufferedInputStream包装了一个FileInputStream,那么先
关BufferedInputStream,再关FileInputStream。但要注意的是由于一般处理流持有节点流引用,处理流都会在自己的close方法中去关闭节点流,因此我们只要关闭外层的处理流即可,如果多此一举的关闭节点流反而会报错。如BufferedInputStream包装了FileInputStream,我们只要关闭BufferedInputStream即可
3)只关处理流,不关节点流,原因见上述第二条
更多相关内容 -
Android中文件读写(输入流和输出流)操作小结
2020-09-03 16:09:49主要介绍了Android中文件读写(输入流和输出流)操作小结,本文总结了Android中文件读写的原理、字节流和字符流的区别、文件读写的步骤、输入流和输出流以及代码实例等内容,需要的朋友可以参考下 -
快速关闭输入输出流的方法
2021-12-05 18:25:33 -
Java程序关闭此输入流并释放与该流关联的所有系统资源
2021-03-13 02:26:25方法java.io.InputStream.close()用于关闭此输入流并释放与该流关联的所有系统资源。此方法不需要任何参数,也不返回任何值。此外,发生I / O错误时,将引发IOException。演示此的程序如下所示-示例importjava.io....方法java.io.InputStream.close()用于关闭此输入流并释放与该流关联的所有系统资源。此方法不需要任何参数,也不返回任何值。此外,发生I / O错误时,将引发IOException。
演示此的程序如下所示-
示例import java.io.FileInputStream;
import java.io.InputStream;
public class Demo {
public static void main(String[] args) throws Exception {
InputStream i = null;
int num = 0;
try {
i = new FileInputStream("C://JavaProgram//data.txt");
num = i.available();
System.out.println("The number of bytes are: " + num);
i.close();
num = i.available();
System.out.println("The number of bytes are: " + num);
} catch(Exception e) {
System.out.print("Error!!! The input stream is closed");
}
}
}
上面程序的输出如下-
输出结果The number of bytes are: 4
Error!!! The input stream is closed
-
网络编程 -- 基础知识 流(输入流,输出流)
2021-04-17 17:41:53Java中的字节流分为输入流和输出流:输出流是指向目的地的写入的二进制序列,输入流是从数据源读取的二进制序列。网络编程的很大一部分工作都是对流的处理,Java提供了丰富的流处理和封装工具。 1.1 输出流 Java...1. 流
流是指通过一定的传播路径从源传递到目的地的字节序列。Java中的字节流分为输入流和输出流:输出流是指向目的地的写入的二进制序列,输入流是从数据源读取的二进制序列。网络编程的很大一部分工作都是对流的处理,Java提供了丰富的流处理和封装工具。
1.1 输出流
Java输出流的基类是 java.io.OutputStream, 他是一个抽象类,提供了一些基本的方法用于向流中写入数据。
1.1 OutputStream
OutputStream类中的常用方法
void
close()
关闭此输出流并释放与此流相关联的任何系统资源。void
flush()
刷新此输出流并强制任何缓冲的输出字节被写出。void
write(byte[] b)
将b.length
字节从指定的字节数组写入此输出流。void
write(byte[] b, int off, int len)
从指定的字节数组写入len
个字节,从偏移off
开始输出到此输出流。abstract void
write(int b)
将指定的字节写入此输出流。
1.1.1 public abstract void write(int b)
将指定的字节写入此输出流。 write的一般合同是将一个字节写入输出流。 要写入的字节是参数b的八个低位。 b的24个高位被忽略。
1.1.2 public void write(byte[] b)
throws IOException将b.length字节从指定的字节数组写入此输出流。 write(b)具有与write(b, 0, b.length)完全相同的效果。
1.1.3 public void write(byte[] b, int off, int len)
从指定的字节数组写入len字节,从偏移off开始输出到此输出流。元素b[off]是写入的第一个字节, b[off+len-1]是此操作写入的最后一个字节。
1.2 输入流
输入流的基类是 java.io.InputStream,也是一个抽象类,他是对流的读取提供了一些基本的方法。
InputStream常用方法
int
available()
返回从该输入流中可以读取(或跳过)的字节数的估计值,而不会被下一次调用此输入流的方法阻塞。void
close()
关闭此输入流并释放与流相关联的任何系统资源。void
mark(int readlimit)
标记此输入流中的当前位置。boolean
markSupported()
测试这个输入流是否支持mark
和reset
方法。abstract int
read()
从输入流读取数据的下一个字节。int
read(byte[] b)
从输入流读取一些字节数,并将它们存储到缓冲区b
。int
read(byte[] b, int off, int len)
从输入流读取最多len
字节的数据到一个字节数组。void
reset()
将此流重新定位到上次在此输入流上调用mark
方法时的位置。long
skip(long n)
跳过并丢弃来自此输入流的n
字节数据。
1.2.1 public abstract int read()
从输入流中读取数据的下一个字节,返回0~255范围内的int字节值.如果因为已经到达流末尾而没有可用的字节,则返回-1.
1.2.2 public int read(byte[] b)
从输入流读取一些字节数,并将它们存储到缓冲区b 。 实际读取的字节数作为整数返回。 该方法阻塞直到输入数据可用,检测到文件结束或抛出异常。 如果流在文件末尾,则返回值-1 ; 否则,读取至少一个字节并存储到b 。
1.2.3 public int read(byte[] b, int off, int len)
参数
- b : 读取数据的缓冲区。
- off : 写入数据的数组 b中的起始偏移量。
- len : 要读取的最大字节数。
结果
- 读取到缓冲区的总字节数,如果没有更多的数据,因为已经到达流的末尾,那么 -1 。
1.3 流处理工具
1.3.1 输出流处理工具
对于输出流的处理,Java定义了一个抽象的基类 java.io.Writer 。该类对writer方法进行了5次重载
abstract void
close()
关闭流,先刷新。abstract void
flush()
刷新流。void
write(char[] cbuf)
写入一个字符数组。abstract void
write(char[] cbuf, int off, int len)
写入字符数组的一部分。void
write(int c)
写一个字符void
write(String str)
写一个字符串void
write(String str, int off, int len)
写一个字符串的一部分。
然而为了提高效率以及需要一些其他功能,并不常用这个类。这些方法多由子类覆盖重新定义。PrinterWriter即为极常用的子类。PrintWriter因其简单易用、灵活而强大的格式化输出能力从而在字符流输出方面得到了越来越多的使用。PrintWriter除了重新定义父类的write方法外,还提供了一些更为便捷的方法。如 print()和 println(),这两个方法在PrinterWriter中进行了多次重载,可以方便高效地向输出流中写人指定编码的对象。
1.3.2 输入流处理工具
对于输入流的处理,Java定义了一个抽象的基类 java.io.Reader 。该类对reade方法进行了4次重载
abstract void
close()
关闭流并释放与之相关联的任何系统资源。int
read()
读一个字符int
read(char[] cbuf)
将字符读入数组。abstract int
read(char[] cbuf, int off, int len)
将字符读入数组的一部分。int
read(CharBuffer target)
尝试将字符读入指定的字符缓冲区。
然而java.io.Reader并不能有效地解决输入流的读取工作,而且其使用不够方便。因此,多使用其子类来读取输入流。常用的子类包括:
(1)InputStreamReader InputStreamReader 是字节流通向字符流的桥梁,它使用指定的字符集读取输入流中的数据并将其解码为字符。通常为了提高使用效率,还需使用BufferedReader 进行一次封装。
(2)BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。通常使用该类包装那些读取开销很大的读取工具,如InputStreamReader。其包装的方式如下: BufferedReader in= newBufferedReader (new InputStreamReader(System.in) ) ;
2. 套接字
所谓套接字(Socket),就是用于实现网络上两个程序间的连接和通信。而在连接的两端都分别有一个套接字。套接字的通信处于较低的层次,由用户编写的程序管理使用
-
Java字节输入流的读方法(两种read方法)
2021-03-07 19:46:513.关闭流对象 以下是具体代码,包含注释 public static void main(String[] args) throws IOException { int index; byte[] bytes = new byte[100];//数组长度为100 FileInputStream fis=new FileInputSt -
java中的IO流(输入流与输出流)概述与总结
2021-02-27 23:10:30其中,所有输入流类都是抽象类InputStream(字节输入流),或者抽象类Reader(字符输入流)的子类;而所有输出流都是抽象类OutputStream(字节输出流)或者Writer(字符输出流)的子类。【首先需要明白的是:流是干什么的?... -
java输入,输出流如何无需finally关闭资源
2021-02-27 13:18:47例子:往一个文件内写东西以前的写法,总是在流处理的最后都需要finally关闭资源,这样多了就会觉得很麻烦private static void oldtest(String filePath) throws FileNotFoundException {OutputStream out = new ... -
字节输入流:io包中的InputStream为所有字节输入流的父类。
2021-03-09 23:26:41字节输入流:io包中的InputStream为所有字节输入流的父类。Int read();读入一个字节(每次一个);可先使用new byte[]=数组,调用read(byte[] b)read (byte[])返回值可以表示有效数;read (byte[])返回值为-1表示结束... -
InputStream输入流的方法
2017-04-19 14:28:03InputStream(字节输入流)类是一个抽象类 所有的输入流都是InputStream直接或间接的子类 int read() //从输入流中读取单个字节,返回所读取的字节数据 int read(byte[] b) //从输入流中读取最多b.length长度的... -
字符输入流 InputStreamReader 的方法 + 字符输出流 OutputStreamWriter 的方法
2018-05-27 16:30:00字符输入流 :InputStreamReader 的方法 + 字符输出流:OutputStreamWriter的方法1、字符输入流 :InputStreamReader 的方法 * int read( ) : 一次读取一个字符 * int read(char[ ] chs) : 一次读取一个字符数组... -
Java输入输出流
2021-03-11 11:58:191.什么是IOJava中I/O操作主要是指使用Java进行输入,输出操作.Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示... -
[转]java 输出流转输入流
2021-04-18 05:45:14ByteArrayOutputStream.toByteArrayByteArrayInputStreamStringWriter.toStringStringReader字符流和二进制流是javaIO的两类流,输入流和输出流是javaIO的两类流如果你曾经使用过Java IO 编程,很可能会遇到这样一个... -
文件输入流和输出流详解
2018-06-24 14:30:38输入流:就是以程序为中心点,硬盘上的文件内容流入到程序中可以存储数据的东西中比如说数组,用read方法 输出流:就是以程序为中心点,程序中的数组或者其他的可以存储数据的东西中的内容输出到硬盘文件中,用... -
java输入输出流详解
2021-02-26 18:40:561.什么是IOJava中I/O操作主要是指使用Java进行输入,输出操作.Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示... -
java 输入流的关闭问题
2016-04-11 09:03:17注释了正常,每次循环不能初始化流么? ``` import java.io.*; public class Test{ public static void main(String[] args) { try{ while(true){ BufferedReader bs = new BufferedReader... -
Java输入输出流详解
2021-02-26 09:14:45通过数据流、序列化和文件系统提供系统输入和输出。Java把这些不同来源和目标的数据都统一抽象为数据流。Java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要... -
【每天一道面试题】输入流和输出流关闭时异常处理有什么区别?
2019-11-07 07:00:00对于输入流,试图关闭流时发生的异常对程序来说可能不太重要,因为执行关闭方法说明已经获取到了所需要的内容。而对于输出流,在关闭流时抛出的异常必须与实际使用流时抛出的异常同等... -
java输出流转输入流
2020-05-06 12:52:37项目中有需要发送带附件的邮件。附件是excel。...发邮件使用的是spring框架的MimeMessageHelper对象,接收的参数是输入流(inputStreamSource抽象类)。 我把OutputStream已经转换成了InputStreamSo... -
字符流(字符输入流和字符输出流)
2021-03-09 10:31:01概述 当使用字节流读取文本文件时,可能会有一个小问题。...它定义了字符输入流的基本共性功能方法。 磁盘-->内存 public void close():关闭此流并释放与此流相关联的任何系统资源。 public in -
字节输入流 read 读取文件
2017-08-21 21:37:04字节输入流read方法可以传入不同的参数,实现读取文件的方式就不一样,推荐使用方法二。 -
java输入输出流
2021-03-13 07:19:03java输入输出流java IO综述在整个Java.io包中最重要的就是5个类和一个接口。5个类指的是File、OutputStream、InputStream、Writer、Reader;一个接口指的是Serializable。Java I/O主要包括如下几个层次,包含三个... -
java 字符输入流,字符输出流,字符缓冲流
2017-08-12 11:14:221 字符输入流 字符流(Java IO的Reader和Writer)功能与InputStream和OutputStream非常类似,InputStream和OutputStream基于字节处理,而字符流(Reader和Writer)是基于字符处理。主要用于读写文本。 1.1 Reader ... -
Java 字节输入流的一些方法
2017-08-21 21:51:55字节输入流的一些方法。。。。 -
文件字节输入流FileInputStream,输出流FileOutputStream
2020-01-13 14:12:23(4)关闭输入流。 二.具体实现 1~2步的实现:可以使用下列构造方法: FileInputStream(String name); 使用给定的文件名name创建一个FileInputStream流。 FileInputStream(File file); 使用F... -
第一章 java 基础 - 08.IO输入流与输出流
2018-09-26 16:48:12无意间都到一篇《走心的安卓工程师跳槽经验分享》,发现自己工作几年了,技术方面虽然有了飞跃的进步,可是不知道自己的技术...08.IO输入流与输出流 java的核心库java.io提供了全面的IO接口。包括:文件读写、标准设... -
Java实现文件写入——输入输出流(IO流)
2021-02-26 20:33:11流是一组有序的数据序列,根据操作类型,分为输入流和输出流。程序从输入流读取数据,向输出流写入数据。Java是面向对象的程序语言,每一个数据流都是一个对象,它们提供了各种支持“读入”与“写入”操作的流类。...