JAVA---IO流

Posted 罐装七喜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA---IO流相关的知识,希望对你有一定的参考价值。

分享下在java中,使用io查看文件,编写文件,复制文件。

 


 

1.复制图片,未抛出异常

package com.newdream.class4;

import java.io.File;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class test_FileCopy {
    
             //未抛出异常

     public static void main(String[] args) throws IOException {  
            //找到目标文件  
            File inFile = new File("F:/3-150402141930.jpg");  
            File destFile = new File("E:/1.jpg");  
            //建立数据的输入输出通道  
            FileInputStream fileInputStream = new  FileInputStream(inFile);  
            FileOutputStream fileOutputStream = new FileOutputStream(destFile); //每新创建一个FileOutputStream的时候,默认情况下FileOutputStream 的指针是指向了文件的开始的位置。 每写出一次,指向都会出现相应移动。  
            //建立缓冲数据,边读边写  
            byte[] buf = new byte[1024];   
            int length = 0 ;   
            while((length = fileInputStream.read(buf))!=-1){ 
                fileOutputStream.write(buf,0,length); //写出很多次数据,所以就必须要追加。  
            }  
            //关闭资源 原则: 先开后关,后开先关。  
            fileOutputStream.close();  
            fileInputStream.close();  
        }  
}

 


 

2.查看文件

 1 package com.newdream.class4;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.FileReader;
 5 
 6 public class CharIOReader {    
 7     //读取文件当中的内容    
 8     public static void main(String[] args) {
 9         //读取字符文件
10         //1.打通通道
11         FileReader fr=null;  //2.创建字符流输入缓冲区
12         BufferedReader  br=null;
13         try{        
14              //把文件内容放到缓存区
15              fr=new FileReader("E:\\newdream.txt");
16                       //3,从缓冲区读取字符
17              //从缓存区读取数据
18              br=new BufferedReader(fr);             
19              //使用while 读出数据
20              while(br.read()!=-1){
21                  String date =br.readLine();
22                  System.out.println(date);
23              }             
24         }catch (Exception e){
25             System.out.println(e.toString());
26         }finally{
27             try{
28                 br.close();    //5.关闭缓冲区,关闭通道
29             }catch(Exception e){
30                 System.out.println(e.toString());
31             }            
32         }
33     }
34 
35 }

 

3.写入文件

 1 package com.newdream.class4;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.BufferedWriter;
 5 import java.io.File;
 6 import java.io.FileWriter;
 7 import java.io.StringReader;
 8 
 9 public class CharIOWriter {
10     
11     //将文字写入指定文件
12     
13 
14     public static String data="我胡汉三又回来了QAQ!";
15     public static void main(String[] args) {
16         String line;//用来控制写文件结束
17         BufferedWriter bw=null;
18         BufferedReader br=null;
19         try{
20             FileWriter fr=new FileWriter("E:\\newdream.txt");
21             bw=new BufferedWriter(fr);
22             //先读取到字符流,再把字符流存到读取流中
23             br=new BufferedReader(new StringReader(data));
24             //readLine() 为null 表示没有内容了,结束
25             while((line=br.readLine())!=null){
26                 bw.write(line);
27                 //写入一行,刷新一下,写下一行
28                 bw.flush();
29             }
30             System.out.println("写入成功!");
31         }catch(Exception e){
32             System.out.println(e.toString());
33         }finally{
34             try{
35                 //关闭缓存区:先打开后关闭,后打开先关闭
36                 br.close();
37                 bw.close();
38             }catch(Exception e){
39                 System.out.println(e.toString());
40             }
41         }
42     }
43 }

 

4.复制电影

 1 package com.newdream.class4;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 
 8 public class test_FileCopyMovie {
 9     public static void main(String[] args) throws IOException {  
10         //找到目标文件  
11         File inFile = new File("F:\\\\迅雷下载\\\\与君相恋100次.mp4");  
12         File destFile = new File("D:\\\\100婚.mp4");  
13         //建立数据的输入输出通道  
14         FileInputStream fileInputStream = new  FileInputStream(inFile);  
15         FileOutputStream fileOutputStream = new FileOutputStream(destFile); 16           
17         //每新创建一个FileOutputStream的时候,默认情况下FileOutputStream 的指针是指向了文件的开始的位置。 每写出一次,指向都会出现相应移动。  
18         //建立缓冲数据,边读边写  
19         byte[] buf = new byte[1024];   
20         int length = 0 ;   
21         while((length = fileInputStream.read(buf))!=-1){
22             fileOutputStream.write(buf,0,length); 
23         }  
24         //关闭资源 原则: 先开后关,后开先关。  
25         fileOutputStream.close();  
26         fileInputStream.close();  
27     }
28 
29 }


--与上面复制文件相同
5.还有一种方法,抛出异常           ---------------------------------分割线-----------------------------------------
 1 package com.month1day24;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileOutputStream;
 6 
 7 public class fileCopy {
 8     
 9     public void fileCopt(String fileA,String fileB){
10         File filea=new File(fileA);
11         File fileb=new File(fileB);
12         
13         FileInputStream fis=null;
14         FileOutputStream fos=null;
15         
16         try{
17             if(!fileb.exists()){ // 如果目标文件不存在就复制
18                 //1.打开源文件通道
19                 fis=new FileInputStream(filea);
20                 //2.打开复制后的目标文件
21                 fos=new FileOutputStream(fileb);
22                 //3.定义一个篮子,用于每次复制
23                 byte[] data=new byte[1024];
24                 int len=0;
25                 
26                 //将内容打印出来
27                 while((len=fis.read(data))!=-1){
//0--指的是从当前位置开始,往后面写任何长度的数据
28 fos.write(data, 0, len); 29 fos.flush(); //每次复制完一次,进行刷新 30 } 31 }else{ 32 System.out.println("目标文件存在,不执行复制操作!"); 33 } 34 System.out.println("复制文件成功"); 35 }catch(Exception e){ 36 System.out.println("操作失败:"+e.toString()); 37 }finally{ 38 //关闭缓存 39 40 try{ //遵循,先开后关, 后开先关 41 fos.close(); 42 fis.close(); 43 }catch(Exception e){ 44 System.out.println("关闭文件失败:"+e.toString()); 45 } 46 } 47 } 48 49 }

 1 package com.month1day24;
 2 
 3 public class test_fileCopy {
 4 
 5     public static void main(String[] args) {
 6         fileCopy copy=new fileCopy();
 7         
 8         //1.复制文本文件     ---可以修改文件名称
 9         copy.fileCopt("F:/演示/演示文档.txt", "D:/演示文档.txt");
10         //2.复制图片
11         copy.fileCopt("F:/演示/我妻.jpg", "D:/我妻由乃.jpg");
12         //3.复制音乐
13         copy.fileCopt("F:/演示/Cody.G - 上个拜五 - AY楊佬叁.mp3", "D:/Cody.G - 上个拜五 - AY楊佬叁.mp3");
14         //4.复制电影
15         copy.fileCopt("F:/演示/速度与激情6_高清.mp4", "D:/速度与激情6_高清.mp4");
16     }
17 }

 

调用fileCopy的方法,直接使用

 


 

6.使用缓冲区

 1 package com.newdream.class4;
 2 
 3 import java.io.BufferedInputStream;
 4 import java.io.BufferedOutputStream;
 5 import java.io.FileInputStream;
 6 import java.io.FileOutputStream;
 7 
 8 public class fileCopy {    
 9     public static void fileCopt(String  fileA,String fileB){        
10         //创建通道
11         FileInputStream fis=null;
12         //创建缓冲区
13         BufferedInputStream bis=null;
14         
15         FileOutputStream fos=null;
16         BufferedOutputStream bos=null;        
17         try{
18             fis =new FileInputStream(fileA);
19             bis =new BufferedInputStream(fis);
20             
21             fos =new FileOutputStream(fileB);
22             bos =new BufferedOutputStream(fos);
23             
24             byte [] data=new byte[1024];  //定义一个篮子接收
25             int len;
26             
27             while((len=bis.read(data))!=-1){
28                 bos.write(data,0,len);
29                 bos.flush();
30             }
31             System.out.println("系统提示:文件复制成功!!!");
32         }catch(Exception e){
33             System.out.println("系统提示:文件复制失败!!!");
34         }finally{
35             try{
36                 bos.close();
37                 fos.close();
38                 bis.close();
39                 fis.close();
40             }catch(Exception e){
41                 e.printStackTrace();
42             }
43         }
44     }
45 }
1 package com.newdream.class4;
2 
3 public class testCopy {
4           //因为使用的是静态变量,所以可以直接调用    
5     public static void main(String[] args) {
6         fileCopy.fileCopt("F:/演示/我妻.jpg", "D:/我妻由乃.jpg");
7     }
8 }

 


 

 

 

1         本文仅代表作者观点,系作者@请多指教 发表。
2         欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
3         http://www.cnblogs.com/yushengaqingzhijiao/p/8343319.html

 

以上是关于JAVA---IO流的主要内容,如果未能解决你的问题,请参考以下文章

JAVA IO流相关代码(打印流 和 文件拼接)

JAVA IO流相关代码(打印流 和 文件拼接)

JAVA IO流相关代码(Serializable接口,管道流PipedInputStream类,RandomAccessFile类相关代码)

JAVA IO流相关代码(Serializable接口,管道流PipedInputStream类,RandomAccessFile类相关代码)

JAVA IO流相关代码(字符流:FileWriter类,FileReader类,BufferedReader类,BufferedWriter类)

Java IO流基础总结