Java IO-09-文件内存泄漏 memory leak
什么是内存泄露
定义:当生命周期长的实例 L 不合理地持有一个生命周期短的实例 S,导致 S 实例无法被正常回收
代码例子
public class AppSettings {
private Context mAppContext;
private static AppSettings sInstance = new AppSettings();
//som...
2018-09-21 09:36:38 |
Java
Java IO-08-MMAP 内存映射 Channel
需求
通道是 Java NIO 的核心内容之一,在使用上,通道需和缓存类(ByteBuffer)配合完成读写等操作。
与传统的流式 IO 中数据单向流动不同,通道中的数据可以双向流动。
通道既可以读,也可以写。
这里我们举个例子说明一下,我们可以把通道看做水管,把缓存看做水塔,把文件看做水库,把水看做数据。
当从磁盘中将文件数据读取到缓存中时,就是从水库向水塔里抽水。
当然,从磁...
2018-09-21 09:36:38 |
Java
Java IO-07-RandomAccessFile
RandomAccessFile 特点
RandomAccessFile 是 java Io 体系中功能最丰富的文件内容访问类。
即可以读取文件内容,也可以向文件中写入内容。但是和其他输入/输入流不同的是,程序可以直接跳到文件的任意位置来读写数据。
因为RandomAccessFile 可以自由访问文件的任意位置,所以如果我们希望只访问文件的部分内容,那就可以使用RandomAcces...
2018-09-21 09:36:38 |
Java
Java IO-06-异常处理
异常处理
错误实例
InputStream input = new FileInputStream("c:\\data\\input-text.txt");
int data = input.read();
while(data != -1) {
//do something with data...
doSomethingWithData(data);
...
2018-09-21 09:36:38 |
Java
Java IO-05-Reader Writer
Reader
Reader是Java IO中所有Reader的基类。
Reader与InputStream类似,不同点在于,Reader基于字符而非基于字节。
换句话说,Reader用于读取文本,而InputStream用于读取原始字节。
read()方法返回一个包含了读取到的字符内容的int类型变量(译者注:0~65535)。如果方法返回-1,表明Reader中已经没有剩余可读取字...
2018-09-21 09:36:38 |
Java
Java IO-04-流
System
System.in
System.in是一个典型的连接控制台程序和键盘输入的InputStream流。
通常当数据通过命令行参数或者配置文件传递给命令行Java程序的时候,System.in并不是很常用。
图形界面程序通过界面传递参数给程序,这是一块单独的Java IO输入机制。
System.out
System.out是一个PrintStream流。System...
2018-09-21 09:36:38 |
Java
Java IO-03-字符/字节数组
字符/字节数组
在java中常用字节和字符数组在应用中临时存储数据。而这些数组又是通常的数据读取来源或者写入目的地。
如果你需要在程序运行时需要大量读取文件里的内容,那么你也可以把一个文件加载到数组中。
当然你可以通过直接指定索引来读取这些数组。但如果设计成为从InputStream或者Reader,而不是从数组中读取某些数据的话,你会用什么组件呢?
读取
要使这样的组件从数组中读...
2018-09-21 09:36:38 |
Java
Java IO-02-管道
管道
概述
管道流是用来在多个线程之间进行信息传递的Java流。
管道流分为字节流管道流和字符管道流。
字节管道流:PipedOutputStream 和 PipedInputStream。
字符管道流:PipedWriter 和 PipedReader。
字节管道流
这里我们只分析字节管道流,字符管道流原理跟字节管道流一样,只不过底层一个是 byte[] 存储 一个是 cha...
2018-09-21 09:36:38 |
Java