- 浏览: 1571436 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
java之19天 IO字节流 和 缓冲区 (二)
- 博客分类:
- Java
带行号的缓冲字符流
LineNumberReader
自定义带行号的缓冲字符流
字节流
字节流 练习:复制一个图片
* 演示mp3的复制,通过缓冲区完成
自定义字节流缓冲区
LineNumberReader
自定义带行号的缓冲字符流
import java.io.FileReader; import java.io.IOException; import java.io.LineNumberReader; import java.io.Reader; /** * 基于带行号的 缓冲的类 */ public class LineNumberRreaderDemo { public static void main(String[] args) throws IOException { method(); //method_1(); } //使用自定义模拟的 行号缓冲类 public static void method() throws IOException{ FileReader fr=new FileReader("E:\\workspace4\\exam\\src\\com\\itheima\\day18\\SystemDemo.java"); MyLineNumberReader mnr=new MyLineNumberReader(fr); mnr.setLineNumber(101); String line=null; while((line=mnr.myReadLine())!=null){ System.out.println(mnr.getLineNumber()+":"+line); } mnr.close(); } //使用java自带的 public static void method_1() throws IOException{ FileReader fr=new FileReader("E:\\workspace4\\exam\\src\\com\\itheima\\day18\\SystemDemo.java"); LineNumberReader lnr=new LineNumberReader(fr); String line=null; lnr.setLineNumber(101); //从101开始 while((line=lnr.readLine())!=null){ System.out.println(lnr.getLineNumber()+":"+line); } lnr.close(); } } //练习:模拟一个带行号的缓冲区 简化 下面的类 class MyLineNumberReader1 extends MyBufferedReader1{ private int lineNumber; MyLineNumberReader1(Reader fr) { super(fr); } public String myReadLine() throws IOException{ lineNumber++; return super.myReaderLine(); } public void setLineNumber(int lineNumber){ this.lineNumber=lineNumber; } public int getLineNumber(){ return lineNumber; } } //发现下面的 的代码 有重复 class MyLineNumberReader{ private Reader r; private int lineNumber; public MyLineNumberReader(Reader r){ this.r=r; } public void setLineNumber(int lineNumber){ this.lineNumber=lineNumber; } public int getLineNumber(){ return lineNumber; } public String myReadLine() throws IOException{ StringBuilder sb=new StringBuilder(); lineNumber++; int ch=0; while((ch=r.read())!=-1){ if(ch=='\r') continue; if(ch=='\n') return sb.toString(); else sb.append((char)ch); } if(sb.length()>0) return sb.toString(); return null; } public void close() throws IOException{ r.close(); } }
字节流
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /** * 字符流 * Writer * Reader * * FileWriter * FileReader * * BufferedWriter * BufferedReader * * 字节流 * InputStream * OutputStream * * BufferedInputStream * BufferedOutputStream * *需求: 想要操作图片数据,这是就需要用到字节流 */ public class FileStream { public static void main(String[] args) throws IOException { // writeFile(); System.out.println("开始"); //readFile_1(); //readFile_2(); readFile_3(); System.out.println("结束"); } public static void writeFile() throws IOException{ FileOutputStream fos=new FileOutputStream("fos.txt"); fos.write("abc".getBytes()); //发现没有关闭 ,没有 刷新 文件中也有 文本了 fos.close(); //不写时候 ,文件中有文本 } //一次读取一个 public static void readFile_1() throws IOException{ FileInputStream fis=new FileInputStream("fos.txt"); int ch=0; while((ch=fis.read())!=-1){ System.out.println((char)ch); } fis.close(); } //一次读取一个数组 public static void readFile_2() throws IOException{ FileInputStream fis=new FileInputStream("fos.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(); } //返回文档的长度 public static void readFile_3() throws IOException{ FileInputStream fis=new FileInputStream("fos.txt"); byte[] buf=new byte[fis.available()]; //定义好一个刚刚好大小的缓冲区 int num=fis.available(); //数据不大的时候 可以这样使用 ,拷贝大的电影的时候. System.out.println("文件中字符数量="+num); fis.read(buf); System.out.println(new String(buf)); fis.close(); } }
字节流 练习:复制一个图片
import java.io.FileInputStream; import java.io.FileOutputStream; /** * 字节流 练习:复制一个图片 * * 思路: * 1)用字节流读取流对象和图片关联 * 2)使用字节流对象创建一个图片文件,用于存储获取到的图片数据. * 3)通过循环读写,完成数据的存储. * 4)关闭资源. */ public class CopyPic { public static void main(String[] args) { copyPic(); } public static void copyPic(){ FileInputStream fis=null; FileOutputStream fos=null; try { fis=new FileInputStream("c:\\1.jpg"); fos=new FileOutputStream("c:\\2.jpg"); byte[] buf=new byte[1024]; int len=0; while((len=fis.read(buf))!=-1){ fos.write(buf,0,len); } } catch (Exception e) { e.printStackTrace(); }finally{ if(fis!=null) try { fis.close(); } catch (Exception e) { e.printStackTrace(); } if(fos!=null) try { fos.close(); } catch (Exception e) { e.printStackTrace(); } } } }
* 演示mp3的复制,通过缓冲区完成
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /** * 演示mp3的复制,通过缓冲区 * BufferedInputStream * BufferedOutputStream * */ public class CopyMp3 { public static void main(String[] args)throws IOException { long start=System.currentTimeMillis(); //copy_1(); copy_2();//速度快 1000ms long end=System.currentTimeMillis(); System.err.println(end-start); } //一个一个的读取 然后 一个一个的写 public static void copy_1() throws IOException{ BufferedInputStream bufis=new BufferedInputStream(new FileInputStream("D:\\Kugou\\元若蓝 - 绿袖子.mp3")); BufferedOutputStream bufos=new BufferedOutputStream(new FileOutputStream("C:\\元若蓝 - 绿袖子.mp3")); int by=0; while((by=bufis.read())!=-1){ bufos.write(by); } bufis.close(); bufos.close(); } //每次读取一个数组 ,然后写一个 public static void copy_2()throws IOException{ BufferedInputStream bufis=new BufferedInputStream(new FileInputStream("D:\\Kugou\\元若蓝 - 绿袖子.mp3")); BufferedOutputStream bufos=new BufferedOutputStream(new FileOutputStream("C:\\元若蓝 - 绿袖子.mp3")); byte[] buf=new byte[1024]; int len=0; while((len=bufis.read(buf))!=-1){ bufos.write(buf,0,len); } bufis.close(); bufos.close(); } }
自定义字节流缓冲区
import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; public class MyBufferedInputStreamDemo { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub MyBufferedInputStream mbufis=new MyBufferedInputStream(new FileInputStream("D:\\Kugou\\元若蓝 - 绿袖子.mp3")); BufferedOutputStream bufos=new BufferedOutputStream(new FileOutputStream("C:\\元若蓝 - 绿袖子.mp3")); int by=0; while((by=mbufis.myRead())!=-1){ bufos.write(by); } mbufis.myClose(); bufos.close(); } } class MyBufferedInputStream{ private InputStream in; private byte[] buf=new byte[1024]; private int pos=0,count=0; MyBufferedInputStream(InputStream in){ this.in=in; } //一次读取一个字节,从缓存区(字节数组)获取. public int myRead() throws IOException{ //通过in对象读取硬盘上的数据,并存储咋buf中 if(count==0){ count=in.read(buf); if(count<=0) return -1; pos=0; } byte b=buf[pos]; pos++; count--; return b&0xff; } public void myClose() throws IOException{ in.close(); } }
发表评论
-
检测一个字符串是否在jvm的常量池中
2018-12-18 17:34 936public static boolean inPool( ... -
UTC时间, GMT时间 ,夏令时
2017-08-18 15:12 2222经常混淆于此,特地研究了一下,记录在此以备忘。 整个地 ... -
java 反射List
2017-02-18 01:58 5589package com.enhance.reflect; ... -
JDK1.5 Exchange 两个线程互换数据
2016-08-04 18:00 907import java.util.concurrent ... -
JDK1.5 CountDownLatch
2016-08-04 16:25 1011/* * 还有一个利用场景: ... -
java CyclicBarrier 循环障碍阻塞
2016-08-03 23:54 950//一个同步辅助类,它允许一组线程互相等待,直到到达某个公 ... -
java 信号灯 Semaphore
2016-08-03 23:53 1779更多介绍http://blog.csdn.net/java20 ... -
java 使用读写锁设计一个缓存模型
2016-08-03 23:49 1367import java.util.HashMap; ... -
java 读写锁
2016-08-03 23:46 775import java.util.Random; i ... -
java 多个线程之间同步通信
2016-08-02 17:16 2361import java.util.concurrent ... -
jdk1.5 锁 Lock 和 Condition
2016-08-02 17:03 875// lock 练习 public class Lock ... -
JDK1.5 获取线程执行结果 Callable Future
2016-08-02 15:08 1127import java.util.Random; i ... -
JDK1.5 线程池
2016-08-02 14:48 760import java.util.concurrent ... -
java 多线程ThreadLocal
2016-08-02 00:13 1105import java.util.Random; ... -
java 定时器 Timer
2016-08-01 16:53 3840import java.util.Calendar; ... -
java 多线程同步+通信
2016-08-01 16:48 922/** *父子线程 交替打印10 次, 100次 ... -
java 线程同步
2016-08-01 16:43 973import java.util.concurrent.l ... -
java多线程练习
2016-08-01 16:35 1794Java 传统多线程 Java 多线程同步 Java 多线 ... -
java 传统多线程
2016-08-01 16:34 962/** * 传统多线程 */ public ... -
java 图片,剪切,缩放
2016-01-06 10:21 2167package out; import ja ...
相关推荐
2、常用21个IO流:FileWriter、FileReader、...3、JAVA IO流经典代码示例,示例从易到难。代码功能涉及字节、字符、字符串、文本文件、图片、音频、视频。演示错误用法和经典用法。 4、代码的结构可查看README文件。
Java IO字符流和字节流,讲述了字符传输流和字节传输流的不同和作用
File 类、RandomAccessFile 类、字节流(文件字节流、缓冲字节流、基本数据类型字节流、打印流、对象序列化流、字节数组流)、字符流(缓冲字符流、文件字符流、转换流、格式化输出流、字符数组流) 这份代码源码...
利用缓冲区提高Java应用程序的IO性能
NULL 博文链接:https://xiongjiajia.iteye.com/blog/1683399
JavaIO实例,包括:字节流、字符流、缓冲流、转换流
IO流 javaio java 流
Java中IO流实例,包括:字节流、字符流、缓冲流、转换流的操作。
java基础之IO流,基础简介知识,帮助你了解java的io技术
java IO流 1. 流的概念 2. 输入流和输出流 3. 字符流、字节流 4. 缓冲流 5. 转换流处理流
javaIO流javaIO流
彻底明白Java的IO系统---java之精髓IO流
javaIO操作各种文件,筛选文件,拷贝文件,上传下载,字符流和字节流都有,根据实际项目情况直接贴就可以了,根据文件类型选择不同的testclss就可以。全部使用效率最高的流
javaIO字节流读取文件方式总结共4页.pdf.zip
java IO流 例子 源程序 字节流,字符流。
Java中文件IO流.pdf 学习资料 复习资料 教学资源
字节流:按照字节读取数据(InputStream、OutputStream) 字符流:按照字符读取数据(Reader、Writer) 功能不同: 节点流:可以直接从数据源或目的地读写数据。 处理流:不直接连接到数据源或目的地,是处理流的流...
这是一个关于io流的文件,里面包括代码和图片截图。详细的说明了io流的内在
java零基础自学 之 JavaIO流处理java零基础自学 之 JavaIO流处理
java之io流实例应用。