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

java之io类,输入输出流学习

2011-11-03 17:32 225 查看
io流,流是一个抽象的概念,当java程序需要从数据源读数据时,会开启一个到数据源的流从文件,内存,或者网络中把数据输出到控制台。

更方便的处理数据的输入输出。

流分为字节流和字符流。字节流由inputstream和outputstream处理,而字符流由reader和writer处理,

InputStream提供的最重要的方法是

read();

read(byte[] b);

read(byte[] b, int off, int len);

OutputStream提供的最重要的方法是

write(int b);

write(byte[] b);

write(byte[] b, int off , int len);

4. I/O应用的一个例子
Java代码
import java.io.*;
public class TestIO{
public static void main(String[] args) throws IOException{
//1.以行为单位从一个文件读取数据
BufferedReader in =new BufferedReader(new FileReader(\"F:
epalonTestIO.java\"));
String s, s2 = new String();
while((s = in.readLine()) != null)
s2 += s + "\\";
in.close();

//1b. 接收键盘的输入
BufferedReader stdin =new BufferedReader(new InputStreamReader(System.in));
System.out.println(\"Enter a line:\");
System.out.println(stdin.readLine());

//2. 从一个String对象中读取数据
StringReader in2 = new StringReader(s2);
int c;
while((c = in2.read()) != -1)
System.out.println((char)c);
in2.close();

//3. 从内存取出格式化输入
try{
DataInputStream in3 =new DataInputStream(new ByteArrayInputStream(s2.getBytes()));
while(true)
System.out.println((char)in3.readByte());
}
catch(EOFException e){
System.out.println(\"End of stream\");
}

//4. 输出到文件
try{
BufferedReader in4 =new BufferedReader(new StringReader(s2)); //把s2当作输入对象
PrintWriter out1 =new PrintWriter(new BufferedWriter(new FileWriter(\"F:epalon TestIO.out\")));
int lineCount = 1;
while((s = in4.readLine()) != null)
out1.println(lineCount  + \":\" + s);
out1.close();
in4.close();
}
catch(EOFException ex){
System.out.println(\"End of stream\");
}

//5. 数据的存储和恢复
try{
DataOutputStream out2 = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(\"F:epalon Data.txt\")));
out2.writeDouble(3.1415926);
out2.writeChars(" Thas was pi:writeChars ");
out2.writeBytes( "Thas was pi:writeByte ");
out2.close();
DataInputStream in5 = new DataInputStream(new BufferedInputStream(new FileInputStream(\"F:epalon Data.txt\")));
BufferedReader in5br = new BufferedReader(new InputStreamReader(in5));
System.out.println(in5.readDouble());
System.out.println(in5br.readLine());
System.out.println(in5br.readLine());
}
catch(EOFException e){
System.out.println(\"End of stream\");
}

//6. 通过RandomAccessFile操作文件
RandomAccessFile rf = new RandomAccessFile(\"F:epalon rtest.dat\", \"rw\");
for(int i=0; i<10; i++)
rf.writeDouble(i*1.414);
rf.close();

rf = new RandomAccessFile(\"F:epalon rtest.dat\", \"r\");
for(int i=0; i<10; i++)
System.out.println(\"Value \" + i + \":\" + rf.readDouble());
rf.close();

rf = new RandomAccessFile(\"F:epalon rtest.dat\", \"rw\");
rf.seek(5*8);
rf.writeDouble(47.0001);
rf.close();

rf = new RandomAccessFile(\"F:epalon rtest.dat\", \"r\");
for(int i=0; i<10; i++)
System.out.println(\"Value \" + i + \":\" + rf.readDouble());
rf.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: