cached 重复 ole imageio seek fix 大于 .org
第一章 -- 流与文件 ---------------------------------------------- 流读写字节 java.io.InputStream 1.0
- abstract int read() //从数据中读入一个字节,并返回该字节,在碰到流的结尾时返回-1int read(byte[] b) //读入一个字节数组,并返回实际读入的字节数,或者在碰到流的结尾时返回-1int read(byte[] b, int off, int len) //读入一个字节数组。这个read方法返回实际读入的字节数,或者在碰到流的结尾时返回-1long skip(long n) //在输入流中跳过n个字节,返回实际跳过的字节数(如果碰到流的结尾,则可能小于n)int available() //返回在不阻塞的情况下可用的字节数void close() //关闭这个输入流void mark(int readLimit) //在输入流的当前位置打一个标记,如果输入流中已经读入的字节多于readLimit个,则这个流允许忽略这个标记void reset() //返回到最后的标记,随后对read的调用将重新读入这些字节boolean markSupported() //如果这个流支持打标记,则返回true
java.io.OutputStream 1.0
- abstract void write(int n) //写出一个字节的数据void write(byte[] b)void write(byte[] b, int off, int len) //写出所有字节或者某个范围的字节到数组b中void close() //清空并关闭输出流void flush() //清空输出流,也就是将所有缓冲的数据发送到目的地
流家族 InputStream 和 OutputStream 为基础 DataInputStream 和 DataOutputStream 可以以二进制格式读写所有的基本 Java 类型 ZipInputStream 和 ZipOutputStream 可以以常见的 ZIP 压缩格式读写文件 4 个附加接口:Closeable、Flushable、Readable 和 Appendablejava.io.Closeable 5.0
- void close() //关闭这个Closeable,可能会抛出IOException
java.io.Flushable 5.0
- void flush() //清空这个Flushable
java.lang.Readable 5.0
- int read(CharBuffer cb) //尝试读入cb可以持有的数量的char值。返回读入的char值的数量
java.lang.Appendable 5.0
- Appendable append(char c) Appendable append(CharSequence cs) //向这个Appendable中追加给定的码元或者给定的序列中的所有码元,返回this
java.lang.CharSequence 1.4
- char charAt(int index) //返回给定索引处的码元int length() //返回这个序列中的码元的数量CharSequence subSequence(int startIndex, int endIndex) //返回由存储在startIndex到endIndex - 1处的所有码元构成的CharSequenceString toString() //返回这个序列中所有码元构成的字符串
组合流过滤器
- FileInputStream fin = new FileInputStream("employee.dat");
- DataInputStream din = new DataInputStream(fin);
- double s = din.readDouble();
使用缓冲机制
- DataInputStream din = new DataInputStream(
- new BufferedInputStream(
- new FileInputStream("employee.dat")));
从一个 ZIP 压缩文件中读入数字
- ZipInputStream zin = new ZipInputStream(new FileInputStream("employee.zip"));
- DataInputStream din = new DataInputStream(zin);
java.io.FileInputStream 1.0
- FileInputStream(String name) FileInputStream(File file) //使用由name字符串或file对象指定路径名的文件创建一个新的文件输入流
java.io.FileOutputStream 1.0
- FileOutputStream(String name) FileOutputStream(String name, boolean append) FileOutputStream(File file) FileOutputStream(File file, boolean append) //使用由name字符串或file对象指定路径名的文件创建一个新的文件输出流
java.io.BufferedInputStream 1.0
- BufferedInputStream(InputStream in ) //创建一个带缓冲区的流
java.io.BufferdOutputStream 1.0
- BufferedOutputStream(OutputStream out) //创建一个带缓冲区的流
java.io.PushbackInputStream 1.0
- PushbackInputStream(InputStream in ) PushbackInputStream(InputStream in , int size) //构建一个可以预览一个字节或者具有指定尺寸的回推缓冲区的流void unread(int b) //回推一个字节,它可以在下次调用read时被再次获取,b:要再次读入的字节
文本输入与输出
- InputStreamReader in = new InputStreamReader(new FileInputStream("input.txt"), "ISO8859_5");
- 等价于
- FileReader in = new FileReader("input.txt"):
以文本格式打印字符串和数字
- PrintWriter out = new PrintWriter("employee.txt"):
- 等同于
- PrintWriter out = new PrintWriter(new FileWriter("employee.txt"));
System.out 是 PrintStream 类,在内部采用与 PrintWriter 相同的方式将 Unicode 字符转换成了默认的主机编码方式。与 PrintWriter 不同的是,它们允许我们用 write(int) 和 write(byte[]) 方法输出原生字节 java.io.PrintWriter 1.1
- PrintWriter(Writer out) PrintWriter(Writer out, boolean autoFlush) //创建一个新的PrintWriterPrintWriter(OutputStream out)PrintWriter(OutputStream out, boolean autoflush) //通过创建必需的中介OutputStreamWriter,从已有的OutputStream中创建一个新的PrintWriterPrintWriter(String filename)PrintWriter(File file) //通过创建必需的中介FileWriter,创建一个想给定的文件写出的新的PrintWritervoid print(Object obj) //通过打印从toString产生的字符串来打印一个对象void print(String s) //打印一个Unicode字符串void println(String s) //打印一个字符串,后面紧跟一个行终止符void print(char[] s) //打印给定的字符串中的所有Unicode字符void print(char c) //打印一个Unicode字符void print(int i)void print(long l)void print(float f)void print(double d)void print(boolean b) //以文本格式打印给定的值void printf(String format, Object... args) //按照格式化字符串指定的方式打印给定的值boolean checkError() //如果产生格式化或输出错误,返回true
使用 Scanner 读入文本输入 Java SE 5.0 之前,处理文本的唯一方式就是 BufferedReader 类,它拥有一个 readLine 方法,可以读入一行文本
- BufferedReader in = new BufferedReader(new FileReader("employee.txt"));
字符集
- //编码Unicode字符串Charset cset = Charset.forName("ISO-8859-1"):String str = ...;ByteBuffer buffer = cset.encode(str);byte[] bytes = buffer.array();//解码字节序列byte[] bytes = ...;ByteBuffer bbuf = ByteBuffer.wrap(bytes, offset, length);CharBuffer cbuf = cset.decode(bbuf);String str = cbuf.toString();
java.nio.charset.Charset 1.4
- static SortedMap availableCharsets() //获取这个虚拟机可用的所有字符集。返回一个映射表,它的键是字符集的名字,值是字符集static Charset forName(String name) //获取给定名字的字符集Set aliases() //返回这个字符集的别名集ByteBuffer encode(String str) //将给定的字符串编码为字节序列CharBuffer decode(ByteBuffer buffer) //解码给定的字节序列,无法识别的输入将被转换成Unicode的"替代字符"('\uFFFD')
java.nio.ByteBuffer 1.4
- byte[] array() //返回这个缓冲区所管理的字节数组static ByteBuffer wrap(byte[] bytes)static ByteBuffer wrap(byte[] bytes, int offset, int length) //返回管理给定的字节数组或给定字节数组的某个范围的字节缓冲区
java.nio.CharBuffer
- char[] array() //返回这个缓冲区所管理的码元数组char charAt(int index) //返回给定索引处的码元String toString() //返回由这个缓冲区所管理的码元构成的字符串
读写二进制数据 DataInputStream 类实现了 DataInput 接口 java.io.DataInput 1.0
- boolean readBoolean() byte readByte() char readChar() double readDouble() float readFloat() int readInt() long readLong() short readShort() //读入一个给定类型的值void readFully(byte[] b) //将字节读入到数组b中,其间阻塞直至所有字节都读入void readFully(byte[] b, int off, int len) //将字节读入到数组b中,其间阻塞直至所有字节都读入String readUTF() //读入由"修订过的UTF-8"格式的字符构成的字符串int skipBytes(int n) //跳过n个字节,其间阻塞直至所有字节都被跳过
java.io.DataOutput 1.0
- void writeBoolean(boolean b) void writeByte(int b) void writeChar(int c) void writeDouble(double d) void writeFloat(float f) void writeInt(int i) void writeLong(long l) void writeShort(int s) //写出一个给定类型的值void writeChars(String s) //写出字符串中的所有字符void writeUTF(String s) //写出由"修订过的UTF-8"格式的字符构成的字符串
随机访问文件 RandomAccessFile 类可以在文件中的任何位置查找或写入数据,通过 "r" 或 "rw" 来指定。同时实现了 DataInput 和 DataOutput 接口 java.io.RandomAccessFile 1.0
- RandomAccessFile(String file, String mode) RandomAccessFile(File file, String mode) //file:要打开的文件,mode:"r"表示只读模式,"rw"表示读/写模式long getFilePointer() //返回文件指针的当前位置void seek(long pos) //将文件指针从文件的开始设置到pos个字节处long length() //返回文件按照字节来度量的长度
ZIP 文档通读 ZIP 文件代码:
- ZipInputStream zin = new ZipInputStream(new FileInputStream(zipname));
- ZipEntry entry;
- while ((entry = zin.getNextEntry()) != null) {
- analyze entry;
- read the contents of zin;
- zin.closeEntry();
- }
- zin.close();
写出 ZIP 文件代码:
- FileOutputStream fout = new FileOutputStream("test.zip");
- ZipOutputStream zout = new ZipOutputStream(fout);
- for all files {
- ZipEntry ze = new ZipEntry(filename);
- zout.putNextEntry(ze);
- send data to zout;
- zout.closeEntry();
- }
- zout.close();
java.util.zip.ZipInputStream 1.1
- ZipInputStream(InputStream in ) //创建一个ZipInputStreamZipEntry getNextEntry() //为下一项返回ZipEntry对象,否则没有更多的项时返回nullvoid closeEntry() //关闭这个ZIP文件中当前打开的项
java.util.zip.ZipOutputStream 1.1
- ZipOutputStream(OutputStream out) //创建一个将压缩数据写出到指定的OutputStream的ZipOutputStreamvoid putNextEntry(ZipEntry ze) //将给定的ZipEntry中的信息写出到流中,并定为用于写出数据的流,然后这些数据可以通过write()写出到这个流中void closeEntry() //关闭这个ZIP文件中当前打开的项void setLevel(int level) //设置后续的各个DEFAULTED项的默认压缩级别。void setMethod(int method) //设置用于这个ZipOutputStream的默认压缩方法,压缩方法:DEFLATED或STORED
java.util.zip.ZipEntry 1.1
- ZipEntry(String name) //这一项的名字long getCrc() //返回用于这个ZipEntry的CRC32校验和的值String getName() //返回这一项的名字long getSize() //返回这一项不被压缩的大小boolean isDirectory() //当这一项是目录时返回truevoid setSize(long size) //设置这一项的大小,当压缩方法是STORED时才必需void setCrc(long crc) //给这一项设置CRC32校验和,这个校验和是使用CRC32类计算的,STORED时必需
java.util.zip.ZipFile 1.1
- ZipFile(String name) ZipFile(File file) //创建一个ZipFile,用于从给定的字符串或File对象中读入数据Enumeration entries() //返回一个Enumeration对象,它枚举了描述这个ZipFile中各个项的ZipEntry对象ZipEntry getEntry(String name) //返回给定名字所对应的项,或者在没有对应项的时候返回nullInputStream getInputStream(ZipEntry ze) //返回用于给定项的InputStreamString getName() //返回这个ZIP文件的路径
对象流与序列化对象序列化(object serialization)ObjectInputStream 和 ObjectOutputStream 类,readObject 和 writeObject 方法在对象流中存储或恢复的所有类都需要实现 Serializable 接口 java.io.ObjectOutputStream 1.1
- ObjectOutputStream(OutputStream out) //创建一个ObjectOutputStream使得你可以将对象写出到指定的OutputStreamvoid writeObject(Object obj) //写出指定的对象到ObjectOutputStream,这个方法将存储指定对象的类、类的签名以及这个类及其超类中所有非静态和非瞬时的域的值
java.io.ObjectInputStream 1.1
- ObjectInputStream(InputStream in ) //创建一个ObjectInputStream用于从指定的InputSream中读回对象信息Object readObject() //从ObjectInputStream中读入一个对象
对象流输出中包含所有对象的类型和数据域每个对象都被赋予一个序列号相同对象的重复出现将被存储为对这个对象的序列号的引用修改默认的序列化机制防止不应该被序列化的域被序列化,标记成 transient 可序列化的类可以定义下列方法:
- private void readObject(ObjectInputStream in ) throws IOException,
- ClassNotFoundException;
- private void writeObject(ObjectOutputStream out) throws IOException;
之后,数据域就不再自动序列化,而是调用这些方法类还可以定义它自己的机制,必须实现 Externalizable 接口,定义两个方法:
- public void readExternal(ObjectInputStream in ) throws IOException,
- ClassNotFoundException;
- public void writeExternal(ObjectOutputStream out) throws IOException;
序列化单例和类型安全的枚举请记住向遗留代码中所有类型安全的枚举以及向所有支持单例设计模式的类中添加 readResolve 方法版本管理运行 JDK 中的单机程序 serialverserialver Employee 这个类的所有版本都需要定义 public static final long serialVersionUID = -184528436328947893L; 文件管理 File 类可以用 FileNameFilter 对象作为 list 方法的参数来减小列表长度,一个实现 FileNameFilter 接口的类需要定义 accept 方法使用 File 类中存储在名为 separator 的静态实例域中的有关当前目录分隔符的信息可以得到系统恰当的分隔符 java.io.File 1.0
- boolean canRead() boolean canWrite() boolean canExecute() //表明文件是否可读、可写或可执行boolean setReadable(boolean state, boolean ownerOnly)boolean setWritable(boolean state, boolean ownerOnly)boolean setExecutable(boolean state, boolean ownerOnly) //设置这个文件的可读、可写或可执行状态。如果ownerOnly为true,状态设置只对文件拥有者有效,否则,对所有人有效。这些方法在设置状态成功后返回truestatic boolean createTempFile(String prefix, String suffix)static boolean createTempFile(String prefix, String suffix, File directory) //在系统的默认临时目录或给定目录中创建一个临时文件,并使用给定的前缀或后缀来生成文件名boolean delete() //尝试删除这个文件void deleteOnExit() //请求在虚拟机关闭时将文件删除boolean exists() //如果目录存在则返回trueString getAbsolutePath() //返回包含绝对路径名的字符串,应该用getCanonicalPath代替它File getCanonicalFile() //返回包含这个文件的规范路径名的File对象String getCanonicalPath() //返回包含这个文件的规范路径名的字符串String getName() //返回包含这个File对象的文件名的字符串(不包含路径)String getParent() //返回这个File对象的父亲名字的字符串File getParentFile() //返回这个File目录的父目录的File对象String getPath() //返回包含这个文件的路径名的字符串boolean isDirectory() //如果这个File对象表示一个文件而不是一个目录或一个设备,则返回trueboolean isFile() //如果这个File对象表示一个文件而不是一个目录或一个设备,则返回trueboolean isHidden() //如果这个File对象表示的是一个隐藏文件或目录,则返回truelong lastModified() //返回这个文件最后被修改的时间(毫秒数)String[] list()String[] list(FilenameFilter filter) //返回由这个File对象包含的满足过滤器条件的文件名和目录名构成的字符串数组File[] listFiles() File[] listFiles(FilenameFilter filter) //返回由这个File对象包含的文件和目录所对应的File对象构成的数组static File[] listRoots() //返回由所有可获得的文件根对应的File对象构成的数组boolean createNewFile() //自动创建一个由File对象给定名字的新文件boolean mkdir() //创建一个由这个File对象给定名字的子目录boolean mkdirs() //与mkdir不同,这个方法在必要时将创建父目录
来源: http://www.bubuko.com/infodetail-2072318.html