java使用字节流操作文件

概述:摘录下统计的常用的字节流操作情况,很全面,值得看看!

一.IO流(字节流File读写文件)

 1 import java.io.*;
 2 public class FileStream {
 3
 4     public static void main(String[] args) throws IOException{
 5
 6     }
 7
 8     public static void readFile_1() throws IOException{
 9         FileInputStream fis=new FileInputStream("fos.txt");
10         int ch=0;
11         while((ch=fis.read())!=-1){
12             System.out.println((char)ch);
13         }
14         fis.close();
15     }
16
17     public static void readFile_2() throws IOException{
18         FileInputStream fis=new FileInputStream("fos.txt");
19         byte[] buf=new byte[1024];
20         int len=0;
21         while((len=fis.read(buf))!=-1){
22             System.out.println(new String(buf,0,len));
23         }
24         fis.close();
25     }
26
27     public static void readFile_3() throws IOException{
28         FileInputStream fis=new FileInputStream("fos.txt");
29         byte[] buf=new byte[fis.available()];
30         fis.read(buf);
31         System.out.println(new String(buf));
32     }
33
34     public static void writeFile() throws IOException{
35         FileOutputStream fos=new FileOutputStream("fos.txt");
36         fos.write("abcde".getBytes());
37         fos.close();
38     }
39
40 }

二.IO流(拷贝图片)

 1 import java.io.*;
 2 public class CopyPic {
 3
 4     public static void main(String[] args) {
 5         FileOutputStream fos=null;
 6         FileInputStream fis=null;
 7         try {
 8             fos=new FileOutputStream("c:\\2.bmp");
 9             fis=new FileInputStream("c:\\1.bmp");
10             byte[] buf=new byte[1024];
11             int len=0;
12             while((len=fis.read(buf))!=-1){
13                 fos.write(buf, 0, len);
14             }
15         } catch (IOException e) {
16             // TODO: handle exception
17             throw new RuntimeException("复制文件失败!");
18         } finally{
19             try {
20                 if(fis!=null){
21                     fis.close();
22                 }
23             } catch (IOException e2) {
24                 // TODO: handle exception
25                 throw new RuntimeException("读取关闭失败!");
26             }
27             try {
28                 if(fos!=null){
29                     fos.close();
30                 }
31             } catch (IOException e2) {
32                 // TODO: handle exception
33                 throw new RuntimeException("写入关闭失败!");
34             }
35         }
36     }
37
38 }

三.IO流(字节流的缓冲区)

 1 import java.io.*;
 2 public class CopyMp3 {
 3
 4     public static void main(String[] args) {
 5
 6     }
 7
 8     public static void copy_1() throws Exception{
 9         BufferedInputStream bufis=new BufferedInputStream(new FileInputStream("c:\\0.mp3"));
10         BufferedOutputStream bufos=new BufferedOutputStream(new FileOutputStream("c:\\1.mp3"));
11         int by=0;
12         while((by=bufis.read())!=-1){
13             bufos.write(by);
14         }
15         bufos.close();
16         bufis.close();
17     }
18
19 }

四.IO流(自定义字节流的缓冲区)

 1 import java.io.*;
 2 public class MyBufferedInputStream {
 3
 4     private InputStream in;
 5
 6     private byte[] buf=new byte[1024];
 7
 8     private int pos=0,count=0;
 9
10     MyBufferedInputStream(InputStream in) {
11         this.in=in;
12     }
13
14     //一次读一个字节,从缓冲区(字节数组)获取
15     public int myRead() throws IOException{
16         //通过in对象读取硬盘上的数据,并存储到buf中
17         if(count==0){
18             count=in.read(buf);
19             if(count<0){
20                 return -1;
21             }
22             pos=0;
23             byte b=buf[pos];
24             count--;
25             pos++;
26             return b&255;
27         }else if(count>0){
28             byte b=buf[pos];
29             count--;
30             pos++;
31             return b&255;
32         }
33         return -1;
34     }
35
36     public void myClose() throws IOException{
37         in.close();
38     }
39
40 }

五.IO流(读取键盘录入)

 1 import java.io.*;
 2 public class ReadIn {
 3
 4     public static void main(String[] args) throws IOException{
 5         InputStream in=System.in;
 6         StringBuilder sb=new StringBuilder();
 7         while(true){
 8             int ch=in.read();
 9             if(ch==‘\r‘)
10                 continue;
11             if(ch==‘\n‘){
12                 String s=sb.toString();
13                 if("over".equalsIgnoreCase(s)){
14                     break;
15                 }
16                 System.out.println(s.toUpperCase());
17                 sb.delete(0, sb.length());
18             }
19             else
20                 sb.append((char)ch);
21         }
22     }
23 }

六.IO流(读取,写入转换流)

 1 import java.io.*;
 2 public class TransStreamDemo {
 3
 4     public static void main(String[] args) throws IOException{
 5         //InputStream in=System.in;
 6
 7         //将字节流转换成字符流对象
 8         //InputStreamReader isr=new InputStreamReader(in);
 9         //使用缓冲区提高读取效率
10         //BufferedReader bufr=new BufferedReader(isr);
11         //键盘录入常用写法
12         BufferedReader bufr=
13                 new BufferedReader(new InputStreamReader(System.in));
14
15         //OutputStream out=System.out;
16         //OutputStreamWriter osw=new OutputStreamWriter(out);
17         //BufferedWriter bufw=new BufferedWriter(osw);
18         BufferedWriter bufw=
19                 new BufferedWriter(new OutputStreamWriter(System.out));
20
21         String line=null;
22         while((line=bufr.readLine())!=null){
23             if("over".equalsIgnoreCase(line))
24                 break;
25             //System.out.println(line.toUpperCase());
26             bufw.write(line);
27             bufw.newLine();
28             bufw.flush();
29         }
30         bufr.close();
31     }
32 }

七.IO流(流操作规律1)

  1. 通过三个明确来完成

1.1    明确源和目的

源:输入流:InputStream,Reader

目的地:输出流:OutputStream,Writer

1.2    操作的数据是否是纯文本

是:字符流

否:字节流

1.3    当体系明确后,再明确要使用哪个具体对象

通过设备来进行区分:

源设备:内存,硬盘,键盘

目的地设备:内存,硬盘,控制台

1.4 是否需要提高读取效率

-----------------技术改变生活,知识改变命运!

时间: 2024-10-19 00:29:24

java使用字节流操作文件的相关文章

JAVA 以字节流读取文件中的BMP图像

用字节流而不是用JAVA的API函数read()有助于大家理解理解BMP的存储方式哈. 同时,从SQL中读取图片的话,也是用字节流读取,需要自己进行转换的. 顺便保存下代码...下次用就有模板了... 只有24位图的哈.   public Image myRead(String path) throws java.io.IOException {     Image image = null;       int biWidth,biHeight,bicount,biSizeImage,npad

关于java io流操作文件探讨

1.任务描述    2.读取一个字符 3.读取整个文件 4.复制文件 5.复制大文件 6.利用字符流解决乱码问题 一.任务描述 大家都知道程序是程序的运行是离不开内存的,但是很多东西并不在程序当中,而程序也需要操作它们.所以就需要一个东西与内存外的资源打交道,我们就把这个东西称为io流.io流分为输出流和输入流,输出流是将内存中的东西输出到内存之外,输入流是将内存之外的东西读取到内存中.一旦有了io流之后,与内存之外的资源打交道就十分方便了.为什么这么说,其实总体上就只需要三步操作,第一步,定位

【Java】字节流-从文件输入,输出到文件

假如需要复制一张图片,一份word,一个rar包.可以以字节流的方式,读取文件,然后输出到目标文件夹. 以复制一张4M的图片举例. 每次读一个字节: ch = (char)System.in.read(); //读入一个字符,返回读到的字节的int表示方式,读到末尾返回-1 复制时候一个字节一个字节的读取.写入,这样是很慢的.设置一个用来缓冲的字符数组,会让复制的过程快很多(每次读入的字节变多). 方便阅读,类的名称用中文描述 import java.io.*; public class 字节流

java 7 使用java.nio.file.*操作文件

java7中辅助类Files新增了两个方法用于读去文件的全部行和全部字节.So..再也不用缓冲区了. 1 package java8_test; 2 3 import java.io.IOException; 4 import java.nio.file.Files; 5 import java.nio.file.Path; 6 import java.nio.file.Paths; 7 import java.util.List; 8 9 public class TestMain { 10

[JAVA]使用字节流拷贝文件

import java.io.*; /** * @Description: * @projectName:JavaTest * @see:PACKAGE_NAME * @author:郑晓龙 * @createTime:2019/5/3 0:45 * @version:1.0 */ public class CopyWithBytes { public static void main(String[] args) { byte[] bytes = readFileToByteArray("d:

Java字节流操作

在java.io包中得操作主要有字节流与字符流两大类,两个类都有输入输出操作. 在字节流中,输出数据主要使用OutputStream类,输入使用的InputStream类. 在字符流中,输出数据使用Writer,输入数据使用Reader. 在Java中IO操作有相应的步骤,以文件的操作为例. (1)使用File类打开一个文件 (2)通过字节流或字符流的子类指定输出的位置. (3)进行读/写操作 (4)关闭输入/输出 字符流与字节流的区别: 字节流在操作时本身不会用到缓冲区(内存),是文件本身直接

java的IO操作:字节流与字符流操作

流的概念 程序中的输入输出都是以流形式,流中保存的实际上都是字节文件. 字节流与字符流 字节流的操作: 1)输入:inputStream, 2)输出:outPutStream; 字符流的操作: 1)输入主要使用:write类. 2)输出主要使用:reader类. 内容操作就四个类. 操作流程: 使用File类操作一定有路径问题,注意分隔符: 实际上四个操作类都是抽象类(区别接口,抽象类的成员都是抽象,并且只能单继承,接口可以有全局变量,但是接口可以多继承) IO操作属于资源操作,对于资源操作,操

Android(java)学习笔记167:Java中操作文件的类介绍

1.File类:对硬盘上的文件和目录进行操作的类.    File类是文件和目录路径名抽象表现形式  构造函数:        1) File(String pathname)       Creates a new File instance by converting the given pathname string into an abstract pathname. 2)File(File parent, String child)       Creates a new File i

Java学习之==&gt;IO文件操作体系

一.概述 在整个 Java.io 中最重要的就是5个类和一个接口.5个类指的是 File.InputStream.OutputStream.Reader.Writer,一个接口指的是Serializable.掌握了这些IO的核心操作那么对于Java中的IO体系也就有了一个初步的认识了. File(文件类):主要用来描述文件或目录的属性,例如:文件大小,修改文件名,删除文件,判断文件所在路径等. InputStream(字节输入流):抽象类,基于字节的输入操作,是所有输入流的父类.定义了所有输入流