java字节流字符流以及高效缓冲流的使用
2016-05-02 20:11
441 查看
字节流一般用于传输视频文件等,字符流一般用于传输文本类型的文件。
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");
}
}
}
字节流
案例:【向文件中写入字符串】
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;
}
}
}
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;
}
}
}
相关文章推荐
- Eclipse编译运行dex.force.jumbo的错误
- java的静态代理
- jAVA接口回调
- Spring之集合DI
- java基础————安卓开发新手的前提
- Java 内部类实现说明
- Spring Tool Suite 安装 Gradle 插件
- Spring 4 整合 Hibernate 5 技术
- java正则表达式详解(匹配、切割和替换)
- springMVC <mvc:default-servlet-handler /> 导致controller无效
- The string "--" is not permitted within comments.问题解决
- java之责任链模式
- java设计模式-单例模式
- [Lesson Learn] LeetCode #1 Two Sum
- spring整合cxf开发webservice
- Java基本类型、基本数据类型之间的转换
- Java Collection、Map集合总结
- myeclipse中修改项目的访问路径
- java 多线程
- sprignmvc 中使用zyUpload 上传图片(批量)