1. Java流式输入/输出原理:在Java程序中,对于数据的输入/输出操作以“流” (stream) 方式进行;J2SDK提供了各种各样的“流”类,用以获取不同种类的数据;程序中通过标准的方法输入或输出数据。
2. 输入/输出流的分类
java.io 包中定义了多个流类型(类或抽象类)来实现输入/输出功能;可以从不同的角度对其进行分类:
按数据流的方向不同可以分为输入流和输出流。(以程序的角度来考虑)
按处理数据单位不同可以分为字节流和字符流。
按照功能不同可以分为节点流和处理流。
J2SDK 所提供的所有流类型位于包java.io内都分别继承自以下四种抽象流类型:
3. InputStream
继承自InputSteam的流都是用于向程序中输入数据,且数据的单位为字节(8 bit)
基本方法:
4. OutputStream
继承自OutputSteam的流是用于程序中输入数据,且数据的单位为字节(8 bit)
基本方法:
5. Reader
继承自Reader的流都是用于向程序中输入数据,且数据的单位为字符(16 bit)
基本方法:
6. Writer
继承自Writer的流都是用于程序中输入数据,且数据的单位为字符(16 bit)
基本方法:
7. 节点流类型
8. 处理流类型
9. 缓冲流
缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法。
J2SDK提供了四种缓存流,其常用的构造方法为:
BufferedReader提供了readLine方法用于读取一行字符串(以\r或\n分隔)。
BufferedWriter提供了newLine用于写入一个行分隔符。
对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush方法将会使内存中的数据立刻写出。
10. 转换流
InputStreamReader和OutputStreamWriter用与字节数据到字符数据之间的转换。
InputStreamReader 需要和 InputStream “套接” 。
OutpStreamWriter 需要和 OutputStream “套接” 。
转换流在构造时可以指定其编码集合,例如:
11. 数据流&ByteArrayInputStream&ByteArrayOutputStream
DataInputStream 和 DataOutputStream 分别继承自InputSteam 和 OutputStream,它属于处理流,需要分别“套接”在InputStream 和OutputStream类型的节点流上。
DataInputStream和DataOutputStream提供了可以存取与机器无关的Java原始类型数据(如:int,double 等)的方法。
DataInputStream和DataOutputStream的构造方法为:
DataInputStream ( InputStream in )
DataOutputStream ( OutputStream out )
12. Print 流
PrintWriter和PrintStream 都属于输出流,分别针对与字符和字节。
PrintWriter和PrintStream提供了重载的print
Println方法用于多种数据类型的输出。
PrintWriter和PrintStream的输出操作不会抛出异常,用户通过检测错误状态获取错误信息。
PrintWriter和PrintStream有自动flush功能。
13. Object流
直接将Object写入或读出
transient关键字
serializable接口
Externalizable 接口
void writeExternal(ObjectOutput out) throws IOException
void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
14. 访问文件
FileInputStream和FileOutputStream分别继承自InputStream和OutputStream用于向文件中输入和输出字节。
FileInputStream和FileOutputStream的常用构造方法:
FileInputSteam 和 FileOutputStream 类支持其父类InputStream 和OutputStream 所提供的数据读写方法。
注意:
在实例化FileInputStream和FileOutputSteam流时要用try-catch语句以处理其可能抛出的FileNotFoundException。
在读写数据时也要用try-catch语句以处理可能抛出的 IOException。
FileNotFoundException是IOException的子类
FileReader 和 FileWriter 分别继承自Reader和Writer,FileInputSteam与FileOutputStream类似,所不同的时FileReader和FileWriter向文件输入和输出的数据单位为字符。
FileReader和FileWriter的常用构造方法:
15. 字符集&编码
字符(Character):是文字与符号的总称,包括文字、图形符号、数学符号等。
字符集(Charset):就是一组抽象字符的集合。
字符集常常和一种具体的语言文字对应起来,该文字中的所有字符或者大部分常用字符就构成了该文字的字符集,比如英文字符集。
一组有共同特征的字符也可以组成字符集,比如繁体汉字字符集、日文汉字字符集。
编码(Encoding):制定编码首先要确定字符集,并将字符集内的字符排序,然后和二进制数字对应起来。根据字符集内字符的多少,会确定用几个字节来编码。
16. 常用字符集
17. 汉字编码
18. ISO/IEC 8859
19. 读取utf-8的文件
2. 输入/输出流的分类
java.io 包中定义了多个流类型(类或抽象类)来实现输入/输出功能;可以从不同的角度对其进行分类:
按数据流的方向不同可以分为输入流和输出流。(以程序的角度来考虑)
按处理数据单位不同可以分为字节流和字符流。
按照功能不同可以分为节点流和处理流。
J2SDK 所提供的所有流类型位于包java.io内都分别继承自以下四种抽象流类型:
字节流 | 字符流 | ||||
输入流 | InputStream | Reader | |||
输出流 | OutputStream | Writer |
3. InputStream
继承自InputSteam的流都是用于向程序中输入数据,且数据的单位为字节(8 bit)
基本方法:
//读取一个字节并以整数的形式返回(0~255), //如果返回-1已到输入流的末尾。 int read() throws IOException //读取一系列字节并存储到一个数组buffer, //返回实际读取的字节数,如果读取前已到输入流的末尾返回-1 int read(byte[] buffer) throws IOException //读取length个字节 //并存储到一个字节数组buffer,从off位置开始存,最多len //返回实际读取的字节数,如果读取前以到输入流的末尾返回-1 int read(byte[] buffer, int off, int len) throws IOException //关闭流释放内存资源 void close() throws IOException
4. OutputStream
继承自OutputSteam的流是用于程序中输入数据,且数据的单位为字节(8 bit)
基本方法:
//向输出流中写入一个字节数据,该字节数据为参数b的低8位 void write(int b) throws IOException //将一个字节类型的数组中的数据写入输出流 void write(byte[] b) throws IOException //将一个字节类型的数组中的从指定位置(off)开始的 //len个字节写入到输出流 void write(byte[] b, int off, int len) throws IOException //关闭流释放内存资源 void close() throws IOException //将输出流中缓冲的数据全部写出到目的地 void flush() throws IOException
5. Reader
继承自Reader的流都是用于向程序中输入数据,且数据的单位为字符(16 bit)
基本方法:
//读取一个字符并以整数的形式返回(0~255), //如果返回-1已到输入流的末尾。 int read() throws IOException //读取一系列字符并存储到一个数组buffer, //返回实际读取的字符数,如果读取前已到输入流的末尾返回-1 int read(char[] cbuf) throws IOException //读取length个字符 //并存储到一个数组buffer,从off位置开始存,最多读取len //返回实际读取的字符数,如果读取前以到输入流的末尾返回-1 int read(char[] cbuf, int off, int len) throws IOException //关闭流释放内存资源 void close() throws IOException
6. Writer
继承自Writer的流都是用于程序中输入数据,且数据的单位为字符(16 bit)
基本方法:
//向输出流中写入一个字符数据,该字节数据为参数b的低16位 void write(int c) throws IOException //将一个字符类型的数组中的数据写入输出流, void write(char[] cbuf) throws IOException //将一个字符类型的数组中的从指定位置(offset)开始的 //length个字符写入到输出流 void write(char[] cbuf, int offset, int length) throws IOException //将一个字符串中的字符写入到输出流 void write(String string) throws IOException //将一个字符串从offset开始的length个字符写入到输出流 void write(String string, int offset, int length) throws IOException //关闭流释放内存资源 void close() throws IOException //将输出流中缓冲的数据全部写出到目的地 void flush() throws IOException
7. 节点流类型
类 型 | 字 符 流 | 字 节 流 | |||
File(文件) | FileReaderFileWriter | FileInputStreamFileOutputStream | |||
Memory Array | CharArrayReaderCharArrayWriter | ByteArrayInputStreamByteArrayOutputStream | |||
Memory String | StringReaderStringWriter | - | |||
Pipe(管道) | PipedReaderPipedWriter | PipedInputStreamPipedOutputStream |
8. 处理流类型
处理类型 | 字 符 流 | 字 节 流 | |||
Buffering | BufferedReaderBufferedWriter | BufferedInputStreamBufferedOutputStream | |||
Filtering | FilterReaderFilterWriter | FilterInputStreamFilterOutputStream | |||
Converting between bytes and character | InputStreamReaderOutputStreamWriter | ||||
Object Serialization | - | ObjectInputStreamObjectOutputStream | |||
Data conversion | - | DataInputStreamDataOutputStream | |||
Counting | LineNumberReader | LineNumberInputStream | |||
Peeking ahead | PusbackReader | PushbackInputStream | |||
Printing | PrintWriter | PrintStream |
9. 缓冲流
缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法。
J2SDK提供了四种缓存流,其常用的构造方法为:
BufferedReader(Reader in) BufferedReader(Reader in,int sz) //sz 为自定义缓存区的大小 BufferedWriter(Writer out) BufferedWriter(Writer out,int sz) BufferedInputStream(InputStream in) BufferedInputStream(InputStream in,int size) BufferedOutputStream(OutputStream out) BufferedOutputStream(OutputStream out,int size)
BufferedReader提供了readLine方法用于读取一行字符串(以\r或\n分隔)。
BufferedWriter提供了newLine用于写入一个行分隔符。
对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush方法将会使内存中的数据立刻写出。
import java.io.*; class Test { public static void main(String[] args) { BufferedInputStream bis = null; try { FileInputStream fis = new FileInputStream("D:\\java\\08\\TestFileInputStream.java"); bis = new BufferedInputStream(fis); int c = 0; System.out.println((char)bis.read()); System.out.println((char)bis.read()); for(int i=0;i<=10 && (c=bis.read())!=-1;i++){ System.out.print((char)c+" "); } System.out.println(); } catch (IOException e) { e.printStackTrace(); } finally { try { if(bis != null) { bis.close(); bis = null; } } catch (IOException e) { e.printStackTrace(); } } } }
10. 转换流
InputStreamReader和OutputStreamWriter用与字节数据到字符数据之间的转换。
InputStreamReader 需要和 InputStream “套接” 。
OutpStreamWriter 需要和 OutputStream “套接” 。
转换流在构造时可以指定其编码集合,例如:
InputStream isr = new InputStreamReader (System.in, “ISO8859_1”)
import java.io.*; class Test { public static void main(String[] args) { try { //OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\java\\08\\char.txt")); //osw.write("mircosoftibmsunapplehp我们"); //osw.write("\r\n"); //源文件-->gbk(ced2)-->字节码文件-->uft8编码(e68891)-->程序运行-->0x6211-->按照gbk编码-->ced2-->硬盘-->ultraedit-->按照gbk解码-->我 //System.out.println(osw.getEncoding()); ///osw.close(); OutputStreamWriter osw = new OutputStreamWriter( new FileOutputStream("D:\\java\\08\\char.txt", true), "ISO8859_1"); // latin1 ascii //源文件-->gbk(ced2)-->字节码文件-->uft8编码(e68891)-->程序运行-->0x6211-->按照ISO8859_1编码-->3f-->ultraedit-->按照gbk解码-->? osw.write("mircosoftibmsunapplehp我们是共产主义接班人"); System.out.println(osw.getEncoding()); osw.close(); } catch (IOException e) { e.printStackTrace(); } } }
11. 数据流&ByteArrayInputStream&ByteArrayOutputStream
DataInputStream 和 DataOutputStream 分别继承自InputSteam 和 OutputStream,它属于处理流,需要分别“套接”在InputStream 和OutputStream类型的节点流上。
DataInputStream和DataOutputStream提供了可以存取与机器无关的Java原始类型数据(如:int,double 等)的方法。
DataInputStream和DataOutputStream的构造方法为:
DataInputStream ( InputStream in )
DataOutputStream ( OutputStream out )
import java.io.*; class Test { public static void main(String[] args) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); try { dos.writeDouble(Math.random()); dos.writeBoolean(true); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); System.out.println(bais.available()); DataInputStream dis = new DataInputStream(bais); System.out.println(dis.readDouble()); System.out.println(dis.readBoolean()); dos.close(); dis.close(); } catch (IOException e) { e.printStackTrace(); } } } //double d = 2.312421421421; //double d1 = 23424323423.234345343465;
12. Print 流
PrintWriter和PrintStream 都属于输出流,分别针对与字符和字节。
PrintWriter和PrintStream提供了重载的print
Println方法用于多种数据类型的输出。
PrintWriter和PrintStream的输出操作不会抛出异常,用户通过检测错误状态获取错误信息。
PrintWriter和PrintStream有自动flush功能。
PrintWriter(Writer out) PrintWriter(Writer out,boolean autoFlush) PrintWriter(OutputStream out) PrintWriter(OutputStream out,boolean autoFlush) PrintStream(OutputStream out) PrintStream(OutputStream out,booleanautoFlush)
//PrintWriter和PrintStream 都属于输出流,分别针对与字符和字节。 //PrintWriter和PrintStream提供了重载的Println方法用于多种数据类型的输出。 //PrintWriter和PrintStream的输出操作不会抛出异常,用户通过检测错误状态获取错误信息。 //PrintWriter和PrintStream有自动flush功能。 //标准输出可以知道别的输出流去。 import java.io.*; class Test { public static void main(String[] args) { PrintStream ps = null; try { FileOutputStream fos = new FileOutputStream("D:\\java\\08\\log.dat"); ps = new PrintStream(fos); } catch (IOException e) { e.printStackTrace(); } if(ps != null){ System.setOut(ps); } System.out.print('中'); } }
13. Object流
直接将Object写入或读出
transient关键字
serializable接口
Externalizable 接口
void writeExternal(ObjectOutput out) throws IOException
void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
//Serializable,是一个标记性接口,是给编译器看的 //------------------------------------------------------------------------------ //serialVersionUID为了让该类向后兼容。即在版本升级时反序列化仍保持对象的唯一性。 //你可以随便写一个,在Eclipse中它替你生成一个,有两种生成方式: //一个是默认的1L,比如:private static final long serialVersionUID = 1L; //一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:private static final long serialVersionUID = -8940196742313994740L;之类的。 //------------------------------------------------------------------------------ //transient修饰的成员变量在序列化的时候,不予考虑 //------------------------------------------------------------------------------ //Externalizable 接口:如果想精确控制序列化的过程,应用此接口 //void writeExternal(ObjectOutput?out) throws IOException //void readExternal(ObjectInput?in) throws IOException, ClassNotFoundException //------------------------------------------------------------------------------ //Serializable虽然没规定具体的方法。但是api里面提到的4个特殊的方法,依然有机会让你控序列化的过程。 //private void writeObject(java.io.ObjectOutputStream out)throws IOException //private void readObject(java.io.ObjectInputStream in)throws IOException, ClassNotFoundException; //ANY-ACCESS-MODIFIER Object writeReplace() throws ObjectStreamException; //ANY-ACCESS-MODIFIER Object readResolve() throws ObjectStreamException; import java.io.*; class Test { public static void main(String args[]) throws Exception { T t = new T(); t.k = 8; FileOutputStream fos = new FileOutputStream("D:\\java\\08\\testobjectio.dat"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(t); oos.flush(); oos.close(); FileInputStream fis = new FileInputStream("D:\\java\\08\\testobjectio.dat"); ObjectInputStream ois = new ObjectInputStream(fis); T tReaded = (T)ois.readObject(); //System.out.println(tReaded.i + " " + tReaded.j + " " + tReaded.d + " " + tReaded.k); System.out.println(tReaded.i + " " + tReaded.j + " " + tReaded.d + " " + tReaded.k + " " + tReaded.n); } } class T implements Serializable{ static final long serialVersionUID = 1L; int i = 10; int j = 9; double d = 2.3; int n=15; transient int k = 15; }
14. 访问文件
FileInputStream和FileOutputStream分别继承自InputStream和OutputStream用于向文件中输入和输出字节。
FileInputStream和FileOutputStream的常用构造方法:
FileInputStream(String name) throws FileNotFoundException FileInputStream(File file) throws FileNotFoundException FileOutputStream(String name)throws FileNotFoundException FileOutputStream(File file) throws FileNotFoundException FileOutputStream(File file, boolean append) throws FileNotFoundException
FileInputSteam 和 FileOutputStream 类支持其父类InputStream 和OutputStream 所提供的数据读写方法。
注意:
在实例化FileInputStream和FileOutputSteam流时要用try-catch语句以处理其可能抛出的FileNotFoundException。
在读写数据时也要用try-catch语句以处理可能抛出的 IOException。
FileNotFoundException是IOException的子类
FileReader 和 FileWriter 分别继承自Reader和Writer,FileInputSteam与FileOutputStream类似,所不同的时FileReader和FileWriter向文件输入和输出的数据单位为字符。
FileReader和FileWriter的常用构造方法:
public FileWriter(File file) throws IOException public FileWriter(File file, boolean append) throws IOException public FileWriter(String fileName)throws IOException public FileWriter(String fileName,boolean append) throws IOException public FileReader(String fileName) throws FileNotFoundException public FileReader(File file) throws FileNotFoundException
15. 字符集&编码
字符(Character):是文字与符号的总称,包括文字、图形符号、数学符号等。
字符集(Charset):就是一组抽象字符的集合。
字符集常常和一种具体的语言文字对应起来,该文字中的所有字符或者大部分常用字符就构成了该文字的字符集,比如英文字符集。
一组有共同特征的字符也可以组成字符集,比如繁体汉字字符集、日文汉字字符集。
编码(Encoding):制定编码首先要确定字符集,并将字符集内的字符排序,然后和二进制数字对应起来。根据字符集内字符的多少,会确定用几个字节来编码。
16. 常用字符集
引用
ASCII American Standard Code for Information Interchange,美国信息交换标准码。在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位)
ISO/IEC 8859,是国际标准化组织(ISO)及国际电工委员会(IEC)联合制定的一系列8位字符集的标准 . ,iso8859-1编码表示的字符范围很窄,无法表示中文字符
UCS:通用字符集(Universal Character Set,UCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的字符编码方式,采用4字节编码。
UCS-2: 与unicode的2byte编码基本一样。
UCS-4: 4byte编码, 目前是在UCS-2前加上2个全零的byte。
Unicode:Unicode的编码方式与ISO 10646的通用字符集(Universal Character Set,UCS)概念相对应,目前的用于实用的Unicode版本对应于UCS-2,使用16位的编码空间。也就是每个字符占用2个字节,共可以表示65536个字符。基本满足各种语言的使用。 Unicode字符集有多种编码形式
标准的Unicode称为UTF-16
后来为了双字节的Unicode能够在现存的处理单字节的系统上正确传输,出现了UTF-8,使用类似MBCS的方式对Unicode进行编码。
UTF: Unicode 的实现方式不同于编码方式。一个字符的Unicode编码是确定的,但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对Unicode编码的实现方式有所不同。 Unicode的实现方式称为Unicode转换格式(Unicode Translation Format,简称为 UTF)。
UTF-8: 8bit变长编码,对于大多数常用字符集(ASCII中0~127字符)它只使用单字节,而对其它常用字符(特别是朝鲜和汉语会意文字),它使用3字节。
UTF-16: 16bit编码,大致相当于20位编码,
ISO/IEC 8859,是国际标准化组织(ISO)及国际电工委员会(IEC)联合制定的一系列8位字符集的标准 . ,iso8859-1编码表示的字符范围很窄,无法表示中文字符
UCS:通用字符集(Universal Character Set,UCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的字符编码方式,采用4字节编码。
UCS-2: 与unicode的2byte编码基本一样。
UCS-4: 4byte编码, 目前是在UCS-2前加上2个全零的byte。
Unicode:Unicode的编码方式与ISO 10646的通用字符集(Universal Character Set,UCS)概念相对应,目前的用于实用的Unicode版本对应于UCS-2,使用16位的编码空间。也就是每个字符占用2个字节,共可以表示65536个字符。基本满足各种语言的使用。 Unicode字符集有多种编码形式
标准的Unicode称为UTF-16
后来为了双字节的Unicode能够在现存的处理单字节的系统上正确传输,出现了UTF-8,使用类似MBCS的方式对Unicode进行编码。
UTF: Unicode 的实现方式不同于编码方式。一个字符的Unicode编码是确定的,但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对Unicode编码的实现方式有所不同。 Unicode的实现方式称为Unicode转换格式(Unicode Translation Format,简称为 UTF)。
UTF-8: 8bit变长编码,对于大多数常用字符集(ASCII中0~127字符)它只使用单字节,而对其它常用字符(特别是朝鲜和汉语会意文字),它使用3字节。
UTF-16: 16bit编码,大致相当于20位编码,
17. 汉字编码
引用
GB2312字集是简体字集,全称为GB2312(80)字集,共包括国标简体汉字6763个。
GB2312,正式的名称为MBCS(Multi-Byte Chactacter System,多字节字符系统),通常也称为ANSI字符集。
BIG5字集是台湾繁体字集,共包括国标繁体汉字13053个。
GBK字集是简繁字集,包括了GB字集、BIG5字集和一些符号,共包括21003个字符。
GB18030是国家制定的一个强制性大字集标准,全称为GB18030-2000,它的推出使汉字集有了一个“大一统”的标准。
GB2312,正式的名称为MBCS(Multi-Byte Chactacter System,多字节字符系统),通常也称为ANSI字符集。
BIG5字集是台湾繁体字集,共包括国标繁体汉字13053个。
GBK字集是简繁字集,包括了GB字集、BIG5字集和一些符号,共包括21003个字符。
GB18030是国家制定的一个强制性大字集标准,全称为GB18030-2000,它的推出使汉字集有了一个“大一统”的标准。
18. ISO/IEC 8859
引用
ISO/IEC 8859
ISO 8859-1 (Latin-1) - 西欧语言 Unicode字符集中覆盖了ISO8859_1
ISO 8859-2 (Latin-2) - 中欧语言
ISO 8859-3 (Latin-3) - 南欧语言。世界语也可用此字符集显示。
ISO 8859-4 (Latin-4) - 北欧语言
ISO 8859-5 (Cyrillic) - 斯拉夫语言
ISO 8859-6 (Arabic) - 阿拉伯语
ISO 8859-7 (Greek) - 希腊语
ISO 8859-8 (Hebrew) - 希伯来语(视觉顺序)
ISO 8859-8-I - 希伯来语(逻辑顺序)
ISO 8859-9 (Latin-5 或 Turkish) - 它把Latin-1的冰岛语字母换走,加入土耳其语字母。
ISO 8859-10 (Latin-6 或 Nordic) - 北日耳曼语支,用来代替Latin-4。
ISO 8859-11 (Thai) - 泰语,从泰国的 TIS620 标准字集演化而来。
ISO 8859-13 (Latin-7 或 Baltic Rim) - 波罗的语族
ISO 8859-14 (Latin-8 或 Celtic) - 凯尔特语族
ISO 8859-15 (Latin-9) - 西欧语言,加入Latin-1欠缺的法语及芬兰语重音字母,以及欧元符号。
ISO 8859-16 (Latin-10) - 东南欧语言。主要供罗马尼亚语使用,并加入欧元符号。
ISO 8859-1 (Latin-1) - 西欧语言 Unicode字符集中覆盖了ISO8859_1
ISO 8859-2 (Latin-2) - 中欧语言
ISO 8859-3 (Latin-3) - 南欧语言。世界语也可用此字符集显示。
ISO 8859-4 (Latin-4) - 北欧语言
ISO 8859-5 (Cyrillic) - 斯拉夫语言
ISO 8859-6 (Arabic) - 阿拉伯语
ISO 8859-7 (Greek) - 希腊语
ISO 8859-8 (Hebrew) - 希伯来语(视觉顺序)
ISO 8859-8-I - 希伯来语(逻辑顺序)
ISO 8859-9 (Latin-5 或 Turkish) - 它把Latin-1的冰岛语字母换走,加入土耳其语字母。
ISO 8859-10 (Latin-6 或 Nordic) - 北日耳曼语支,用来代替Latin-4。
ISO 8859-11 (Thai) - 泰语,从泰国的 TIS620 标准字集演化而来。
ISO 8859-13 (Latin-7 或 Baltic Rim) - 波罗的语族
ISO 8859-14 (Latin-8 或 Celtic) - 凯尔特语族
ISO 8859-15 (Latin-9) - 西欧语言,加入Latin-1欠缺的法语及芬兰语重音字母,以及欧元符号。
ISO 8859-16 (Latin-10) - 东南欧语言。主要供罗马尼亚语使用,并加入欧元符号。
19. 读取utf-8的文件
import java.io.*; public class TestInputStreamReader { public static void main(String[] args) throws Exception{ FileInputStream fin=new FileInputStream("d:\\chartest\\utf-8.txt"); InputStreamReader fileIn=new InputStreamReader(fin,"UTF-8"); BufferedReader infm= new BufferedReader(fileIn); String s = ""; while(true){ s=infm.readLine(); if(s==null)break; System.out.println(s); } } }
发表评论
-
十一、GUI编程
2010-03-28 11:57 9871. GUI -- Graphical User Interf ... -
十、网络编程(TCP/IP、Socket编程、C/S)
2010-03-28 11:16 17061. 网络基础概念 ... -
九、Java多线程机制
2010-03-28 10:56 8791. 线程的基本概念 线程是一个程序内部的顺序控制流。 ... -
七、容器/集合
2010-03-20 18:00 9621. 容器概念:Java API 所提供的一系列类的实例,用于 ... -
六、常用类
2010-03-19 20:20 6611. String 类 java.lang.String 类代 ... -
五、数组
2010-03-18 20:20 8861. 数组概述 数组 ... -
四、异常处理
2010-03-17 22:30 7061. 异常的概念 Java 异常是Java提供的用于处 ... -
三、面向对象
2010-03-17 15:47 8881. 面向对象编程语言特 ... -
二、基础语法
2010-03-17 13:21 6671. 标识符命名规则:由字母、“_”、“$”或数字组成,并以字 ... -
一、Java入门
2010-03-17 12:37 7151. java的核心机制:虚拟机、垃圾收集。 2. JVM ...
相关推荐
本文档是关于使用Eclipse Office进行流线模拟的练习指导,主要涵盖了如何导入和管理FrontSim数据,以及流线模拟的基本概念和优缺点。流线模拟是一种油藏工程中用于描述井的波及区域和流动模型的技术,它通过追踪流场...
结合某钢厂八流大方坯连铸中间包生产现状,基于物理模拟与数值模拟方法,对中间包内钢水流动特性及温度场进行了研究.物理模拟结果表明:原中间包因各流水口距长水口冲击点距离不等,导致各流响应时间及停留时间差别增大,...
【八百里流媒体服务器软件系统】是一款专用于实时流媒体传输的软件,适用于各种操作系统,包括Windows Server 2003, 2008, Windows XP, Windows 7以及Linux(仅支持CentOS和Redhat)。该系统提供30天的试用期,试用...
第八章理想流体的有旋流动和无旋流动
八、代理人设置 NC审批流配置手册中介绍了代理人设置,包括代理人设置的界面介绍、代理人设置的操作说明等。代理人设置是NC审批流配置的重要组件,用户需要掌握代理人设置以便更好地配置NC审批流。 九、审批流消息...
实验八“孔口与管嘴出流实验”是水力学领域的一个重要实验,旨在通过实际操作来理解流体动力学中的基本概念,如孔口出流、管嘴出流、流速、流量以及阻力等。实验的目标是学习测量孔口与管嘴出流的相关系数,包括断面...
流媒体服务搭建是一个重要的实践环节,它涉及到网络通信、视频编码和播放技术等多个领域。通过本次实验,我们深入了解了流媒体的基本概念以及它在不同场景中的应用,例如在线教育、实时直播、视频会议等。流媒体的...
#### 八、OOP的继承性和装饰模式的区别 1. **继承性**:是面向对象编程的一个基本特性,允许创建一个新的类(子类),继承另一个类(父类)的所有属性和方法。继承主要用于扩展已有类的功能。 2. **装饰模式**:是...
"Ansys 命令流八天学会" Ansys 命令流是一种广泛应用于有限元分析领域的命令流式语言,主要用于定义模型、加载求解和后处理等操作。以下是八天学会 Ansys 命令流的知识点总结: Day 1:熟悉 ANSYS 基本关键字的...
水力学第八章明渠恒定非均匀流
### 工作流管理技术基础第八章知识点解析 #### 章节概述 本章节主要介绍了工作流管理系统(Workflow Management System, WfMS)的基本概念、组成部分及其在实际业务流程中的应用。通过深入探讨工作流设计、执行...
八、NIT(Network Information Table)和 EIT(Event Information Table) NIT 是 Network Information Table 的简称,即“网络信息表”。EIT 是 Event Information Table 的简称,即“环境信息表”。NIT 可以提供...
本研究以八流梯形中间包为对象,通过物理模拟方法,利用水模实验对流场进行研究,并通过加入特定控流装置对中间包结构进行优化,从而达到改善流场的目的。 首先,研究的理论基础是相似原理,即在一定的相似条件下,...
标题和描述中所提的知识点主要围绕7812这款三端稳压器的扩流电路图展开。7812是一个系列型号,例如LM7812,它属于7800系列的线性稳压IC。在详细讨论7812三端稳压器的扩流电路之前,我们先要了解几个基础知识点。 ...
#### 八、工作流的激活与使用 - **激活工作流**:完成工作流的设计后,需要将其激活以便实际使用。 - **查看工作流**:用户可以通过查看问题页面中的工作流变迁链接,了解问题当前所处的步骤以及可执行的变迁。 ##...
### 八、最佳实践 1. **清晰规则定义**:确保规则易于理解和维护,避免过度复杂的逻辑。 2. **模块化设计**:将规则按功能划分为独立模块,便于复用和更新。 3. **测试**:对规则和规则流进行充分的单元测试和集成...
八、缓冲流 缓冲流是处理流的一种,用于提高读写效率。缓冲流可以套接在节点流之上,提供了更快的读写速度。常见的缓冲流类型有 BufferedReader、BufferedWriter、BufferedInputStream 和 BufferedOutputStream。 ...
#### 八、标准化的需求 随着信息技术的发展,不同组织和机构之间的工作流系统越来越需要相互协作。为了实现这一点,工作流参考模型强调了标准化的重要性,通过建立统一的标准和规范,确保不同系统之间的互操作性。 ...
#### 八、分布式工作流系统的实现技术 分布式工作流系统能够在多个地理位置上运行和协调工作流。这部分内容讨论了实现分布式工作流系统的关键技术,如消息传递、事务管理、安全性和容错机制等。这些技术对于确保...
51定时器 八个按键控制八个LED 单按键控制数码管加1 点亮P0口所有LED 流水灯暗点流动 流水灯亮点流动 闪烁P0口所有LED 数码管动态扫描加1 数码管动态扫描显示 数组流水灯 双按键控制数码管加减1