您的位置:首页 > 编程语言 > Java开发

关于Java的IO的学习

2013-07-27 21:07 295 查看
7.12

可以从其中读入一个字节序列的对象称为:输入流

可以从其中写入一个字节序列的对象称为:输出流

字节的来源以及目的地可以是文件也可以是网络连接或者内存块

抽象类inputstream和outputstream是面向字节的输入\输出类

而从reader和writer抽象类继承出来的是面向双字节的unicode字符;

Inputstream基本方法:

Abstract void Read()读取一个字节并返回,遇到结尾是输出-1;

Int avialable()查看流中还可用的字节数

Void close()关闭当前流

Outputstream基本方法:

Abstract void write()写一个字节到流对象中

Void close()关闭流,关闭的同时会将流中的内容送出;

Void flush()输出并清空流

Read和write在执行的时候是阻塞的;

PushBackStream的用法:

package org.xzh.in;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.PushbackInputStream;

publicclass in {
publicstaticvoid main(String[] args){
String fileName="aa.txt";
int c=0;
int cc=0;
try{
PushbackInputStream s=new PushbackInputStream(new
FileInputStream(fileName));
System.out.println(s);
while((c=s.read())!=-1){

if(c=='a'){
if((cc=s.read())==
's'){
System.out.println("daiti");
}else{
s.unread(cc);
System.out.println('a');
}
}else{
System.out.println((char)c);
}

s.close();
}catch(IOException e){
e.printStackTrace();

}
}
}

这个类用于多字符匹配用;

如果要以文本格式输入数据,使用的是SCANNER,下面是实例程序:

Scanner s = new Scanner(System.in);

//receive string

String str = s.next();

//receive integer

Integer i = s.nextInt();

//receive double

Double d = s.nextDouble();

System.out.println(str+i+d);

Java中split的用法:

String line=in.nextLine();
String[] tokens=line.split("\\|");
name=tokens[0];
salary=Double.parseDouble(tokens[1]);
int y=Integer.parseInt(tokens[2]);
int m=Integer.parseInt(tokens[3]);
int d=Integer.parseInt(tokens[4]);
GregorianCalendar calendar=new GregorianCalendar(y,m-1,d);
hireDay=calendar.getTime();

关于字符集的学习:

获取一个字符集:Charset cset=Charset.forName(“ISO-8859-1”);

获取某个字符集的别名: Set<String> aliases=cset.aliases();

For(String alias:aliases){

System.out.println(alises);

}

获取可用的字符集:

Map<String,Charset> charset=Charset.avialableCharsets();

For(String name:charset.keySet()){

System.out.println(name);

}

Unicode字节序列与其他字符集的转换:

转换的顺序是:字符—字节缓冲序列—字节

解码的顺序:字节—字节缓冲学列—字符序列---字符串;

String str=”11”;

Charser cset=Charset.forName(“iso8859-1”);

ByteBuffer buffer=cset.encode(str);

Byte[] byte=buffer.arrat();

Buffer=ByteBuffer.wrap(byte);

CharBuffer cbuf=cset.decode(buffer);

String str=cbuf.toString();.

随机读取文件:

RandonAccessFile in=new RandomAccessFile(”ee.txt”.”r”);

getFilePointer得到的是当前文件指针的位置

seek(long n);定位到指定的位置
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: