黑马程序员—字节流Stream和缓冲流Buffered的小练习
2014-01-24 14:53
267 查看
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
我自己对读取文件并输出方法的总结:
我把各种方法写在了下面的一个程序中
public class ReadFile
{
public static void main(String[] args)throws IOException
{
//writeFile();
//readFile_1();
//readFile_2();
readFile_3();
}
//使用FileIputStream读文本,并用字节数组输出数据
public static void readFile_1()throws IOException
{
FileInputStream fis = new FileInputStream("test.txt");
byte[] buf = new byte[1024];
int len = 0;
while((len = fis.read(buf))!=-1)
{
System.out.println(new String(buf,0,len));
}
fis.close();
}
//使用FileIputStream读文件,一个字符一个字符的输出
public static void readFile_2()throws IOException
{
FileInputStream fis = new FileInputStream("test.txt");
int len = 0;
while((len = fis.read())!=-1)
{
System.out.println((char)len);
}
fis.close();
}
//使用FileIputStream的available()方法获取文本的大小
public static void readFile_3()throws IOException
{
FileInputStream fis = new FileInputStream("test.txt");
int num = fis.available();
byte[] buf = new byte[num];//定义一个刚刚好的字节缓冲区,不需要用循环了
fis.read(buf);
System.out.println(new String(buf));
System.out.println(num);
fis.close();
}
//使用FileIputStream创建并把数据写入文件
public static void writeFile()throws IOException
{
FileOutputStream fos = new FileOutputStream("test.txt");
fos.write("uvwxyz".getBytes());
fos.close();
}
}
复制一个图片
思路:
1、用字节读取流对象和图片关联
2、用字节写入流对象创建一个图片文件,用于存储获取到的图片数据
3、通过循环读写,完成数据的存储
4、关闭资源
public class CopyImg
{
public static void main(String[] args)
{
//创建文件输入字节流fis
FileInputStream fis = null;
//创建文件读取字节流fos
FileOutputStream fos = null;
try
{
//把图片加载到输入流中
fis = new FileInputStream("刘少康.jpg");
//创建目的文件
fos = new FileOutputStream("lsk.jpg");
//创建字节数组
byte[] buf = new byte[1024];
int len = 0;
//循环把源文件数据写入目的文件中
while((len = fis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
}
catch(IOException e)
{
//异常处理
System.out.println("复制失败!");
}
finally
{
//整个finally都是在关流
if(fis!=null)
try
{
if(fis!=null)
fis.close();
}
catch(IOException e)
{
throw new RuntimeException(e.toString());
}
try
{
if(fos!=null)
fos.close();
}
catch(IOException e)
{
throw new RuntimeException(e.toString());
}
}
}
}
演示MP3的复制,通过缓冲区
bufferedOutputStream
bufferedInputStream
代码如下:
public class CopyMP3
{
public static void main(String[] args)throws IOException
{
//创建输入缓冲流,把文件读取进来
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("1.mp3"));
//创建输出缓冲流,用来向流中写入数据
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("2.mp3"));
int len = 0;
//循环把源mp3写入目的mp3
while((len = bis.read())!=-1)
{
bos.write(len);
}
bis.close();
bos.close();
}
}
鉴于把这些都写在一个博客中不便于以后用到时翻看,所以把这些小练习分开来写。
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
我自己对读取文件并输出方法的总结:
我把各种方法写在了下面的一个程序中
public class ReadFile
{
public static void main(String[] args)throws IOException
{
//writeFile();
//readFile_1();
//readFile_2();
readFile_3();
}
//使用FileIputStream读文本,并用字节数组输出数据
public static void readFile_1()throws IOException
{
FileInputStream fis = new FileInputStream("test.txt");
byte[] buf = new byte[1024];
int len = 0;
while((len = fis.read(buf))!=-1)
{
System.out.println(new String(buf,0,len));
}
fis.close();
}
//使用FileIputStream读文件,一个字符一个字符的输出
public static void readFile_2()throws IOException
{
FileInputStream fis = new FileInputStream("test.txt");
int len = 0;
while((len = fis.read())!=-1)
{
System.out.println((char)len);
}
fis.close();
}
//使用FileIputStream的available()方法获取文本的大小
public static void readFile_3()throws IOException
{
FileInputStream fis = new FileInputStream("test.txt");
int num = fis.available();
byte[] buf = new byte[num];//定义一个刚刚好的字节缓冲区,不需要用循环了
fis.read(buf);
System.out.println(new String(buf));
System.out.println(num);
fis.close();
}
//使用FileIputStream创建并把数据写入文件
public static void writeFile()throws IOException
{
FileOutputStream fos = new FileOutputStream("test.txt");
fos.write("uvwxyz".getBytes());
fos.close();
}
}
复制一个图片
思路:
1、用字节读取流对象和图片关联
2、用字节写入流对象创建一个图片文件,用于存储获取到的图片数据
3、通过循环读写,完成数据的存储
4、关闭资源
public class CopyImg
{
public static void main(String[] args)
{
//创建文件输入字节流fis
FileInputStream fis = null;
//创建文件读取字节流fos
FileOutputStream fos = null;
try
{
//把图片加载到输入流中
fis = new FileInputStream("刘少康.jpg");
//创建目的文件
fos = new FileOutputStream("lsk.jpg");
//创建字节数组
byte[] buf = new byte[1024];
int len = 0;
//循环把源文件数据写入目的文件中
while((len = fis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
}
catch(IOException e)
{
//异常处理
System.out.println("复制失败!");
}
finally
{
//整个finally都是在关流
if(fis!=null)
try
{
if(fis!=null)
fis.close();
}
catch(IOException e)
{
throw new RuntimeException(e.toString());
}
try
{
if(fos!=null)
fos.close();
}
catch(IOException e)
{
throw new RuntimeException(e.toString());
}
}
}
}
演示MP3的复制,通过缓冲区
bufferedOutputStream
bufferedInputStream
代码如下:
public class CopyMP3
{
public static void main(String[] args)throws IOException
{
//创建输入缓冲流,把文件读取进来
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("1.mp3"));
//创建输出缓冲流,用来向流中写入数据
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("2.mp3"));
int len = 0;
//循环把源mp3写入目的mp3
while((len = bis.read())!=-1)
{
bos.write(len);
}
bis.close();
bos.close();
}
}
鉴于把这些都写在一个博客中不便于以后用到时翻看,所以把这些小练习分开来写。
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
相关文章推荐
- 黑马程序员——第十三篇:字符缓冲流、IO流练习、其他流对象
- 黑马程序员——进制转换巩固练习之c语言实现
- 黑马程序员----FileReader和FileWriter练习-简单的文件copy
- 黑马程序员——C语言基础——结构体相关练习
- 黑马程序员-wpf 计算器布局练习
- JAVA提高篇(10)-缓冲流-BufferedInputStream、BufferedOutputStream
- 黑马程序员-GUI练习
- JAVA学习笔记(二十九) - 缓冲流 BufferedInputStream &BufferedOutputStream
- 黑马程序员-函数;练习
- 黑马程序员_File类代码练习(列出文件目录)
- 黑马程序员 JAVA 五一论坛练习 —— 4(10技术分)
- 黑马程序员_日记58_HashMap自定义对象存取练习
- 黑马程序员---IO和集合的小练习
- java例程练习(缓冲流)
- 黑马程序员——综合练习 学生信息管理系统
- 黑马程序员-Java if语句练习-暴露的基础小问题
- 黑马程序员-习题练习1
- 黑马程序员----【javaSE基础】代码练习--重载与重写
- 黑马程序员—java基础_异常多态练习
- 黑马程序员-网络编程TCP练习(服务端)