文件的读取和写入(指定路径)

 1 package cn.jason.ios.streams;
  2 
  3 import java.io.BufferedInputStream;
  4 import java.io.BufferedOutputStream;
  5 import java.io.File;
  6 import java.io.FileInputStream;
  7 import java.io.FileNotFoundException;
  8 import java.io.FileOutputStream;
  9 import java.io.FileReader;
 10 import java.io.IOException;
 11 
 12 /**
 13  * 测试IO流 * 
 14  *         读取指定文件的信息
 15  * @author 小风微灵
 16  *
 17  */
 18 public class MyStream {
 19 
 20     /**
 21      * 字节流读取信息到控制台
 22      * @param filePath        文件地址
 23      * @throws IOException    抛出的异常
 24      */
 25     private static void getFileInfos_ZJ(String filePath) throws IOException{
 26         
 27         //创建对象
 28         File file=new File(filePath);
 29         
 30         //FileInputStream         输入流
 31         FileInputStream fis=new FileInputStream(file);
 32         
 33         //需要一个缓冲器
 34         byte[] bs=new byte[1024*1024];
 35         
 36         //记录读取长度
 37         int length=fis.read(bs);
 38         
 39         //[3]读取数据(开水管洗澡)    
 40         String content=new String(bs,0,length);
 41         
 42         System.out.println("【缓冲】读取的内容:"+content);
 43         
 44         //[4]关闭资源(关闭水龙头)
 45         fis.close();
 46     }
 47     
 48     /**
 49      * 字符流读取信息到控制台
 50      * @param filePath
 51      * @throws IOException 
 52      */
 53     private static void getFileInfos_ZF(String filePath) throws IOException{
 54                 //创建对象
 55                 File file=new File(filePath);
 56                 
 57                 //字符流
 58                 FileReader fr=new FileReader(file);
 59                 
 60                 //开始读取数据
 61                 int content=0;
 62                 while ((content=fr.read())!=-1) {            
 63                     System.err.print((char)content);
 64                 }
 65                 fr.close();
 66     }
 67         
 68     /**
 69      * 缓冲字符流读取信息到控制台
 70      * read
 71      *        public int read(char[] cbuf,
 72      *                        int offset,
 73      *                        int length)
 74      *                 throws IOException将字符读入数组中的某一部分。 
 75      *            
 76      *        指定者:
 77      *            类 Reader 中的 read
 78      *        参数:
 79      *            cbuf - 目标缓冲区
 80      *            offset - 从其处开始存储字符的偏移量
 81      *            length - 要读取的最大字符数 
 82      *        返回:
 83      *            读取的字符数,如果已到达流的末尾,则返回 -1 
 84      *        抛出: 
 85      *            IOException - 如果发生 I/O 错误
 86      *
 87      * @throws IOException
 88      */
 89     private static void getFileInfos_ZF_HC(String filePath)throws IOException{
 90         //读取
 91                 File file=new File(filePath);
 92                 FileInputStream fis=new FileInputStream(file);        
 93                 BufferedInputStream bis=new BufferedInputStream(fis);
 94             //工具    
 95                 int length=0;
 96                 byte[] b=new byte[1024];
 97                 StringBuilder infos=new StringBuilder();
 98         //输出        
 99                 while((length=bis.read(b))!=-1){
100                     String str=new String(b,0,length);                    
101                     infos.append(str);
102                 }
103                 System.out.println(infos.toString());
104                 
105         //关闭资源            
106                 bis.close();
107                 fis.close();
108     }
109     
110     /**
111      *拷贝一个文件的内容到另外一个文件中
112      * @param srcFilePath    源文件地址
113      * @param desFilePath    目标文件地址
114      * @throws IOException 
115      */
116     private static void sFile_To_OtherFile(String srcFilePath,String desFilePath) 
117                                             throws IOException{
118         //读取文件
119             File fin=new File(srcFilePath);
120             FileInputStream fis=new FileInputStream(fin);        
121             BufferedInputStream bis=new BufferedInputStream(fis);
122             
123         //写入文件
124             File fout=new File(desFilePath);
125             FileOutputStream fos=new FileOutputStream(fout,true);//追加信息,而不是覆盖        
126             BufferedOutputStream bos=new BufferedOutputStream(fos);
127             
128         //工具准备    
129             //缓冲写法1【测试通过】
130 //            byte[] b=new byte[1024];
131 //            int length=0;
132 //            while((length=bis.read(b))!=-1){
133 //                bos.write(b, 0, length);
134 //            }
135             //缓冲写法2【测试通过】
136             int length=0;
137             while((length=bis.read())!=-1){
138                 bos.write(length);
139             }
140         //关闭资源    
141             bos.close();
142             fos.close();
143             bis.close();
144             fis.close();    
145     }
146     
147     /**
148      * 程序入口
149      * @param params    启动参数
150      * @throws IOException     IO流异常抛出
151      */
152     public static void main(String[] params) throws IOException {
153         getFileInfos_ZF_HC("F:\\FileDemos\\2.txt");
154         sFile_To_OtherFile("F:\\FileDemos\\2.txt","F:\\FileDemos\\test.txt");
155     }
156 }
复制代码

 

研究技术需要静下心来,一点一点地深究.......
posted @ 2017-07-26 15:01  javaobject  阅读(2448)  评论(0编辑  收藏  举报