JAVA高级应用学习笔记----流

来源:互联网 发布:农村淘宝现状分析 编辑:程序博客网 时间:2024/06/05 01:03
JAVA高级应用学习笔记----流
2007-10-24 21:44:13
标签:JAVA流
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://youxue.blog.51cto.com/231393/47617
 
Stream (流): 数据从一端到另一端
字节流:  读写二进制的对象
字符流:  读写的都是字符  方法:Reader Write
文件:  相关记录数据的集合
JAVA.io.File
**************************************
java.io.file的常用方法:
 File(File parent,String child)  文件路径和文件对象
 File(File parent)   只创建一个文件路径
 File(String parentname)
 File(String parent,String child)
 public String getPath()
 public String getParent()
 public String getAbsolutePath()
 public boolean exists()
 public long length()
 public boolean createNewFile() throws IOException
 public boolean mkdir() throwsIOException
**************************************
InputStream 输入流它是一个抽象类
重要方法:
 read()  从输入流中读取下一个数据字节
 read(byte[] b) 读取一定数量的字节并将其存储在缓冲区数组b中
 available() 返回输入流方法的下不受阻塞而读取的字节数 
 skip(long n)  跳过和放弃输入流中的N个数据字节
 mark(int readlimit) 在此输入流中标记当前的位置
 reset()   将此输入重新定位到对此输入流最后调用mark方法时
的位置
 close()   关闭输入流并释放所有系统资源
**************************************
OutputStream 输出流
重要方法:
 write(int b) 将指定的字节写入输出流
 flush()  刷新输出流强制写出所有缓冲的输出字符
 close()  关闭输出流并释放所有系统资源
**************************************
FilterInputStream 和 FilterOutputStream
 目的:增加原有类的功能使其读(写)得更快而且更有效
FileInputStream  文件输入流
用FileInputStream 读文本文件(1)
 引入相关的类
     import java.io.IOException;
     import java.io.InputStream;
     import java.io.FileInputStream;
 构造一个文件输入流对象
     InputStream fileobject = new FileInputStream(“text.txt”);
用FileInputStream 读文本文件(2)
 利用文件输入流类的方法读取文本文件的数据
  fileobject.available(); //可读取的字节数
  fileobject.read();        //读取文件的数据       
 关闭文件输入流对象
  fileobject.close();
 例:
  public static void main(String[] args) throws IOException {
        int size;
        InputStream fileobject = new FileInputStream(args[0] );
        System.out.println(“可读取的字节数: "
            + (size = fileobject.available()));
        char[] text = new char[200] ;
        for (int count = 0; count < size; count++) {
            text[count] = ((char) fileobject.read());
            System.out.print(text[count]);
        }
        System.out.println("");
        fileobject.close();
     }
**************************************
FileOutputStream 文件输出流
用FileOutputStream 写文本文件(1)
 引入相关的类
  import java.io.IOException;
  import java.io.OutputStream;
  import java.io.FileOutputStream;
 构造一个文件输出流对象
  OutputStream fos = new FileOutputStream("Text.txt");
用FileOutputStream 写文本文件(2)
 利用文件输出流的方法写文本文件
  String str ="好好学习Java";
  byte[] words  = str.getBytes();
  fos.write(words, 0, words.length);      
 关闭文件输出流
  fos.close();
 例:
 public static void main(String[] args) { 
       try {                
            String str ="好好学习Java";
            byte[] words  = str.getBytes();
            OutputStream fos = new FileOutputStream("Text.txt");
            fos.write(words, 0, words.length);
            System.out.println("Text文件已更新!");
            fos.close();
        } catch (IOException obj) {
                 System.out.println("创建文件时出错!");
        }
   }
*************************************************
 过滤一个流
重要的过滤流--------缓冲流
 缓冲字节流:
  BufferedInputStream
  BufferedOutputStream
用BufferedReader 读文本文件 (1)
 引入相关的类
  import java.io.FileReader;
  import java.io.BufferedReader;
  import java.io.IOException;
 构造一个BufferedReader对象
  FileReader fr=new FileReader("mytest.txt");
  BufferedReader br=new BufferedReader(fr);
 利用BufferedReader的方法读取文本文件的数据
  br.readLine();        //读取一行数据,返回字符串
 关闭相关的流对象
  br.close();
  fr.close();
例:
/**创建一个FileReader对象.*/
        FileReader fr=new FileReader("mytest.txt");
        /**创建一个BufferedReader 对象.*/
        BufferedReader br=new BufferedReader(fr);
        /**读取一行数据.*/
        String line=br.readLine();
        while(line!=null){
            System.out.println(line);
            line=br.readLine();
        }
         /**流的关闭.*/
        br.close();
        fr.close();
*********************************
用BufferedWriter 写文本文件
 引入相关的类
  import java.io.FileWriter ;
  import java.io.BufferedWriter ;
  import java.io.IOException;
 构造一个BufferedWriter对象
  FileWriter fw=new FileWriter("mytest.txt");
  BufferedWriter bw=new BufferedWriter(fw);
 利用BufferedWriter的方法写文本文件
  bw.write (“hello”);            
 相关流对象的清空和关闭
  bw.flush();
  fw.close();
例:
/**创建一个FileWriter 对象*/
       FileWriter fw=new FileWriter("mytest.txt");
       /**创建一个BufferedWriter 对象*/
       BufferedWriter bw=new BufferedWriter(fw);
       bw.write("大家好!");
       bw.write("我正在学习BufferedWriter。");
       bw.newLine();
       bw.write("请多多指教!");
       bw.newLine();
       bw.write(“好好学习VCDP");
       bw.flush();
       fw.close();
//////////////////////////////////////////////////////
字符流类
Reader和Writer
FileReader和FileWriter
BufferedReader和BufferedWriter
//////////////////////////////////////////////////////
习题:在D盘里创建一个AAA文件夹,在文件夹里在建一个T1文件夹,在T1建一个a.txt文件
Import java.io.*
class A
{
 public static void main(String args[]) throws IOException
 {
  File f=new File("D:\\AAA\\t1");
  if(!f.exists()){//判断有无此文件夹,在就复盖,无创建
   f.mkdirs();//一次性可创建多个文件夹,若只创建一个文件夹
用f.mkdir()
  }
  File nextFile=new File(f,"a.txt");//在文件夹里创建一个a.txt文

   nextf.createNewFile(); //createNewFile()是创建文件的
方法
  ///////////////////////////////////////
  读文件
  File a=new File("D:\\AAA\\t1\\a.txt");
  inputStream in=new FileInputStream(a);
  in.read();//一个字节一个字节读反回ASCII码
  int n=in.available()
  StringBuffer s=new StringBuffer
  for(int i=0;i<=n;i++)
  {
  char(in.read());//将int转成Char型或String+空格
  s.append(char(in.read));//返回所有字符内容
  }
   System.out.println(s);//将所有字符内容打印
  //////////////////////
  若有中文的将上读文件替换
  int n=in.available();
  byte b[]=new byte[];
  in.read[a];//一次性读入
  String s=new String (b);
  System.out.println(s);
  //////////////////
  写文件
  File file =new File("D:\\AAA\\t1\\a.txt");
  OutputStream out=new FileOutputStream(file);
  Strint s="Hello";
  out.write(s.getBytes());
  out.close();//关闭流
 }
}
///////////////////////////////////////////////////////////////////
1> 构建如下目录
 d:\hello\t1\a.txt
 d:\hello\t1\b.txt
 d:\hello\t1\c.txt
import java.io.*;
class  A
{
 public static void main(String[] args) throws IOException
 {
  File f=new File("D:\\hello\\t1");
  if(!f.exists())
  {
   f.mkdirs();
  }
  File f1=new File(f,"a.txt");
  f1.createNewFile();
  File f2=new File(f,"b.txt");
  f2.createNewFile();
  File f3=new File(f,"c.txt");
  f3.createNewFile();
 }
}
2> 使用流写入如下内容
 a.txt
  hello World
  MyWorld
 b.txt
  XXX学校
  XX中心
 c.txt
  学号:XX
  名字:XX
import java.io.*;
class B
{
 public static void main(String[] args) throws IOException
 {
  File f=new File("D:\\hello\\t1\\a.txt");
  OutputStream out=new FileOutputStream(f);
  String str="hello World\r\nMyWorld";
  out.write(str.getBytes());
  out.close();
  File f1=new File("D:\\hello\\t1\\b.txt");
  OutputStream out1=new FileOutputStream(f1);
  String str1="XXX学校\r\nXX中心";
  out1.write(str1.getBytes());
  out1.close();
  File f2=new File("D:\\hello\\t1\\c.txt");
  OutputStream out2=new FileOutputStream(f2);
  String str2="学号:XXX\r\n名字:XXX";
  out2.write(str2.getBytes());
  out2.close();
 }
}
3>使用流读入C盘下的所有文件夹和文件,将所有的文件夹名和文件名写入到String[]中,
在控制台上打印。并写入到d:\c盘内容.txt文件中去
import java.io.*;
public class C {
 public static void main(String[] args) throws IOException{  
  
  File ff =new File("d:\\c盘内容.txt");
  ff.createNewFile();
  File file =new File("c:\\");
  String ary[]=file.list();
  String a="";
  for(String b: ary){
   a=a+b+"\r\n";
  }
  OutputStream out = new FileOutputStream(ff);
  out.write(a.getBytes());
  out.close();
 }
}

??????????????????????????????/流的复习
java.io
类 PrintStream
java.lang.Object
  java.io.OutputStream
      java.io.FilterOutputStream 
          java.io.PrintStream
PrintStream(File file)
          创建具有指定文件且不带自动行刷新的新打印流。
PrintStream(File file, String csn)
          创建具有指定文件名称和字符集且不带自动行刷新的新打印流。
PrintStream(OutputStream out)
          创建新的打印流。
 
PrintStream(OutputStream out, boolean autoFlush)
          创建新的打印流。
PrintStream(OutputStream out, boolean autoFlush, String encoding)
          创建新的打印流。
PrintStream(String fileName)
          创建具有指定文件名称且不带自动行刷新的新打印流。
PrintStream(String fileName, String csn)
          创建具有指定文件名称和字符集且不带自动行刷新的新打印流。
System.out - 标准输出流 显示器  OutputStream
System.in - 标准输入流 键盘  InputStream
 PrintStream System.out =  PrintStream(System.out)
 void print(Object obj)
          打印对象。
 void print(String s)
          打印字符串。
 PrintStream printf(Locale l, String format, Object... args)
          使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法。
 PrintStream printf(String format, Object... args)
          使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法。
 void println(int x)
          打印整数,然后终止该行。
 void println(long x)
          打印 long,然后终止该行。
 

字节流--8 位     字节的方式读写 - 适用于一切情况 
 InputStream   OutputStream
     读取二进制很方便
     
     Java - char -> 16位
     
     
字符流--16 位 Unicode   主要用于读写字符串  
 Reader   Writer

public abstract class InputStream 
 
 read()   读字节  
 available()  查询可用字节数
 close()   关闭流
    
    //InputStream的自类必须实现的方法
    abstract 方法 
  
 skip()   空方法
 mark()   空方法
 reset()   空方法
 BufferedInputStream 实现过skip()mark()reset()
 FileInputStream  没有实现过 skip()mark()reset()
  
//////////////////////////////////////////////////
public abstract class OutputStream
 write()  abstract 方法  
 close()  abstract 方法 
 
 flush()  空方法 
 FileOutputStream  没有实现过 flush() 
 BufferedOutputStream  实现过flush() 
 
///////////////////////////////////////////////////

1> Java中流分字节流和字符流 java.io.*
 字节流--8 位
  InputStream   OutputStream
 字符流--16 位 Unicode
  Reader   Writer
2> 输入流 - 从 源 到  程序  源 - XXXInputStream 
XXXReader
 输出流 - 从 程序 到 目的地 目的地- XXXOutputStream 
XXXWriter
 
 过虑流 - 用于加强已有输入输出流的功能
   输入型
   输出信 
 BufferedInputStream br =
   new BufferedInputStream(new FileInputStream("文件
名")); 
原创粉丝点击