java字节流字符流以及高效缓冲流的使用

  • Post author:
  • Post category:java


字节流一般用于传输视频文件等,字符流一般用于传输文本类型的文件。

Java的字节流

InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先。

Java的字符流

Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串的祖先。

结合开始所说的输入/输出流 ,出现了个一小框架。


字节流                         字符流

输入流        InputStream               Reader

输出流        OutputStream            Writer





注:文中separator是为了区分是Windows还是Unix下的系统分隔符(,/);


使用案例:


创建新文件


import java.io.*;
class hello{
public static void main(String[] args) {
File f=new File("D:hello.txt");
try{
f.createNewFile();
}catch (Exception e) {
e.printStackTrace();
}
}
}


【案例2】File类的两个常量




import java.io.*;
class hello{
public static void main(String[] args) {
System.out.println(File.separator);
System.out.println(File.pathSeparator);
}
}


案例:删除一个文件




/**
* 删除一个文件
* */
import java.io.*;
class hello{
public static void main(String[] args) {
String fileName="D:"+File.separator+"hello.txt";
File f=new File(fileName);
if(f.exists()){
f.delete();
}else{
System.out.println("文件不存在");
}

}
}


案例:创建一个文件夹




/**
* 创建一个文件夹
* */
import java.io.*;
class hello{
public static void main(String[] args) {
String fileName="D:"+File.separator+"hello";
File f=new File(fileName);
f.mkdir();
}
}


案例:判断一个指定的路径是否为目录




/**
* 使用isDirectory判断一个指定的路径是否为目录
* */
import java.io.*;
class hello{
public static void main(String[] args) {
String fileName="D:"+File.separator;
File f=new File(fileName);
if(f.isDirectory()){
System.out.println("YES");
}else{
System.out.println("NO");
}
}
}


字节流

案例:【向文件中写入字符串】

/**
* 字节流
* 向文件中写入字符串
* */
import java.io.*;
class hello{
public static void main(String[] args) throws IOException {
String fileName="D:"+File.separator+"hello.txt";
File f=new File(fileName);
OutputStream out =new FileOutputStream(f);
String str="你好";
byte[] b=str.getBytes();
out.write(b);
out.close();
}
}


Android流输出




public class StreamTools {
    /**
     * 将输入流转换成字符串
     * 
     * @param is
     *            从网络获取的输入流
     * @return
     */
    public static String streamToString(InputStream is) {
        try {
             //ByteArrayOutputStream 需要一个Byte数组做为缓冲
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len = 0;
            while ((len = is.read(buffer)) != -1) {
                baos.write(buffer, 0, len);
            }
            baos.close();
            is.close();
            byte[] byteArray = baos.toByteArray();
            return new String(byteArray);
        } catch (Exception e) {
            Log.e(tag, e.toString());
            return null;
        }
    }
}



版权声明:本文为undividedshy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。