关于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);定位到指定的位置
可以从其中读入一个字节序列的对象称为:输入流
可以从其中写入一个字节序列的对象称为:输出流
字节的来源以及目的地可以是文件也可以是网络连接或者内存块
抽象类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);定位到指定的位置
相关文章推荐
- 【关于Java的IO的学习】
- 关于 文件操作 【JAVA_IO】的学习与总结。
- Java IO学习【2】一个关于换行、续写的的小问题
- 关于 文件操作 【JAVA_IO】的学习与总结。
- 30日学习笔记,关于java的IO系统已经Decorarot模式
- Java IO学习【17】关于流的基本规律
- 关于这几天学习的java文件IO
- 关于学习Java
- JAVA IO - 序列化学习
- 【java学习】IO FileInputstream
- Java IO学习笔记六
- Java8学习计划--关于多核多线程并发编程-Java8-CompletableFuture 2的介绍
- 学习Java中关于迭代
- 近日关于Java反射的学习
- 关于JAVA学习的书籍介绍
- java.se.io.13关于IO的工具包
- Java学习之IO总结
- Java IO的个人学习笔记(4)
- Java--学习(一)关于使用Gson将json字符串转换成对象
- 从装饰设计模式角度学习JavaIO字节流