inputStrem outPutStem 结尾的流类 一次检查1个字节。
read wridt 结尾的流类 一次检查2个字节 即一个字符。
流在输入输出结束之后 利用close() 的方法结束流的传输。
System.exit(-1)退出程序。
public class Hello {
public static void main(String[] args)
{
int b = 0;
FileInputStream a = null;
FileOutputStream c = null;
try{
a = new FileInputStream("D://Hello.class");
c = new FileOutputStream("D://HelloEveryOne1.java");
while((b = a.read()) != -1){
c.write(b);
}
a.close();
c.close();
}catch(FileNotFoundException eo){
System.out.print("找不到!");
System.exit(-1);
}
catch(IOException eo){
System.out.print("文件读取错误");
}
System.out.print("文件复制成功");
}
}
FileInputStream 与 FileOutpubStrem 的用法,利用每次读取一个字节然后将字节写入文件中,结束之后close完成复制过程。
FileReader FileWriter 的用法,类似,不过每次读取2个字节,可以完成中文的输出,不过利用自定义的txt要完成utf-8的编码格式才可以正确的显示。
这些所谓的流类可以理解为一条管道,链接到指定文件的管道,然后利用这个管道向外或者向内传输数据。
如果直接是程序与文件一条管道直接连接,称之为字节流。如果在管道上在套上其他的过滤管道,这些过滤管道称为处理流。
BufferedInputSteam mark(标记某个节点,以后从这个节点开始) reset(重新从标记的节点开始)
Buffered的相应的处理流的构造函数的参数依托于对应的inputStrem,outStream,reader,writer的相应的流类。
然后Buffered就有相应多的方法来操作这些流数据。
BufferedReader newLine() 写入时候的换行 readLine() 读的时候的整读一行字符。
InputStreamReader outPutStreamWriter 处理流的类用来转换,字节处理转为字符处理。
ByteArrayInputStream 字符数组流 ByteOutputStream input 和output是以程序为参考系来作为对象的
在定义ByteArrayInputStream时候,即是input到外面,即是写入的环节,这个时候当new的时候,会在内存里面申请
一块空间,然后形象的有一条管道负责输入不同的字节进去,这时如果需要输入不同的数据类型,利用dataInputStream
套在管道的外面,形成第二管道,扩大填充的范围,这样就可以根据writeLong writeBoolean等格式的写入方法满足要
求。
接着要从那块内存里面读取数据,即要弄另外一条输出管道,这里利用byteArrayOutputStream(.toByteArray)之前的
节点流数据读取byte数组进入到这里,才知道读出的内容范围。然后再需要再套个管道 dataOutputStream读取各式的
数据类型,这里根据我们之前填充的顺序,先写先读,通过不同的read方法。
flush 清除小桶里面缓存的东西
print 与 println 的区别 后者是输出之后换行 不会抛出异常
printStream 输入流 将System.out.print() 转移输出的目的地 利用 Syste.setOut(printStream类型);
再利用两条管道的套用,FileoutputStream将sysetm.out.print()的print东西输出到我们创的文件中。
PrintStream ps = null;
try{
FileOutputStream a = new FileOutputStream("D://20150213.txt");
ps = new PrintStream(a);
}catch(IOException eo){
System.out.print("输入错误");
}
if(ps != null){
System.setOut(ps); //将out出来的路径转化
}
int ln = 0;
for(byte c = 0 ; c < 50000; c++){
System.out.print(c + " ");
if(ln++ >= 100){
System.out.println();
ln = 0;
}
}
// System.setOut(null);
System.out.print("输入成功");
String s = null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //借助BufferedReader可以调用它的readLine()方法 利用 System.in
<span style="white-space:pre"> </span> 获取面板输入的东西,它就是一个小桶暂存区。 </span>
try{
FileWriter fw = new FileWriter("d://20150214.txt"); //新建一txt文档
PrintWriter log = new PrintWriter(fw); //输入方式改变,由面板输入
while((s = br.readLine()) != null){
if(s.equalsIgnoreCase("exit"))
break;
System.out.println(s);
System.out.println("--------------------");
log.println(s);
log.flush();
}
log.println("===" + new Date() + "===");//打印当前的时间
log.flush();
log.close();
}catch(IOException eo){
}
printStream 输入流 将System.out.print() 转移输出的目的地 利用 Syste.setOut(printStream类型);
再利用两条管道的套用,FileoutputStream将sysetm.out.print()的print东西输出到我们创的文件中。
serializable 接口 不需要重写方法 仅标明可以序列化
ObjectOutStream 结合 FileOutputStream的方法,先定义一个文件,接通第一条管道到文件那里,然后再利用
ObjectOutStream 通过 writeObject()的方法,把我们需要传输的类写进去。
调用的时候通过FileInputStream()先读到某个文件,即相当于先接通条管道,再利用ObjectInputStream利用
readObejct() 再通过类型的强转,获得我们需要的类。需要serializable可以序列化。
Num testNum = new Num();
testNum.a = 2015;
testNum.b = 2;
testNum.c = 13;
try{
FileOutputStream a = new FileOutputStream("D://20140214.txt");
ObjectOutputStream b = new ObjectOutputStream(a);
b.writeObject(testNum);
b.flush();
b.close();
FileInputStream e = new FileInputStream("D://20140214.txt");
ObjectInputStream f = new ObjectInputStream(e);
Num readNum = (Num) f.readObject();
System.out.print(readNum.a);
}catch(ClassNotFoundException er){
}
catch(FileNotFoundException er){
}
catch(IOException er){
System.out.print("123");
}