对java IO,NIO简单操作

 对 IO,NIO的简单操作,详细看如下代码

 1、InputStream,OutputStream是对字节流的操作,Reader,Writer是对字符的操作

2、对大文件的拷贝使用RandomAccessFile类和NIO

  1 import java.io.*;
  2 import java.nio.ByteBuffer;
  3 import java.nio.channels.FileChannel;
  4
  5 public class IOWriteRead {
  6
  7     public static void main(String[] args) {
  8         // 一行一行读取文件内容
  9         //readFile("d:\\a.txt");
 10         // 以字符的方式读取a文件写入到b文件
 11         readFileByReader("d:\\a.txt","d:\\c.txt");
 12         // 以字节的方式读取a文件写入到b文件
 13         //readFileByStream("d:\\a.txt","d:\\c.txt");
 14         //拷贝a文件到b文件
 15         //copyFile("d:\\a.txt","d:\\c.txt");
 16         // 拷贝大文本,使用NIO,RandomAccessFile
 17         //copyBigFile("d:\\a.txt","d:\\c.txt");
 18
 19     }
 20
 21
 22     // 一行一行读取文件内容
 23     public static void readFile(String sourceFile){
 24         BufferedReader br = null;
 25         try {
 26             br = new BufferedReader(new FileReader(sourceFile));
 27             String s;
 28             while (( s = br.readLine()) != null){
 29                 System.out.println(s);
 30             }
 31         } catch (FileNotFoundException e) {
 32             e.printStackTrace();
 33         } catch (IOException e) {
 34             e.printStackTrace();
 35         }finally {
 36             try {
 37                 br.close();
 38             } catch (IOException e) {
 39                 e.printStackTrace();
 40             }
 41         }
 42     }
 43
 44     // 以字符的方式读取a文件写入到b文件
 45     public static void readFileByReader(String sourceFile,String targetFile){
 46         BufferedReader br =null;
 47         //FileWriter fw = null;
 48         PrintWriter pw = null;
 49         try {
 50             br = new BufferedReader(new FileReader(sourceFile));
 51             //fw = new FileWriter(targetFile);
 52             //pw = new PrintWriter(new FileWriter(targetFile));
 53             pw = new PrintWriter(targetFile);
 54             String s ;
 55             while ((s = br.readLine()) != null){
 56                 //fw.write(s+"\r\n");
 57                 pw.write(s);
 58             }
 59
 60         } catch (FileNotFoundException e) {
 61             e.printStackTrace();
 62         } catch (IOException e) {
 63             e.printStackTrace();
 64         }finally {
 65             try {
 66                 //fw.close();
 67                 pw.close();
 68                 br.close();
 69             } catch (IOException e) {
 70                 e.printStackTrace();
 71             }
 72         }
 73     }
 74
 75     // 以字节的方式读取a文件写入到b文件
 76     public static void readFileByStream(String sourceFile,String targetFile){
 77         BufferedInputStream in = null;
 78         BufferedOutputStream out = null;
 79         try {
 80             in = new BufferedInputStream(new FileInputStream(sourceFile));
 81             out = new BufferedOutputStream(new FileOutputStream(targetFile));
 82             int len = in.available();
 83             if(len > 0){
 84                 byte[] bytes = new byte[len];
 85                 in.read(bytes, 0 ,len);
 86                 out.write(bytes);
 87             }
 88         } catch (FileNotFoundException e) {
 89             e.printStackTrace();
 90         } catch (IOException e) {
 91             e.printStackTrace();
 92         }finally {
 93             try {
 94                 out.close();
 95                 in.close();
 96             } catch (IOException e) {
 97                 e.printStackTrace();
 98             }
 99         }
100     }
101
102     //拷贝a文件到b文件
103     public static void copyFile(String sourceFile,String targetFile){
104         File file = new File(sourceFile);
105         if(!file.exists()){
106             System.out.println(sourceFile+"不存在");
107         }
108             FileInputStream in = null;
109             FileOutputStream out = null;
110             try {
111                 in = new FileInputStream(sourceFile);
112                 out = new FileOutputStream(targetFile);
113                 int len = in.available();
114                 if(len > 0){
115                     byte[] bytes = new byte[len];
116                     in.read(bytes,0 , len);
117                     out.write(bytes);
118                 }
119             } catch (FileNotFoundException e) {
120                 e.printStackTrace();
121             } catch (IOException e) {
122                 e.printStackTrace();
123             }finally {
124                 try {
125                     out.close();
126                     in.close();
127                 } catch (IOException e) {
128                     e.printStackTrace();
129                 }
130             }
131     }
132
133
134     // 拷贝大文本,使用NIO,RandomAccessFile
135     public static void copyBigFile(String sourceFile,String targetFile){
136         File file = new File(sourceFile);
137         if(!file.exists()){
138             System.out.println("文件不存在");
139         }
140         FileChannel in =null;
141         FileChannel out =null;
142         try {
143             in = new RandomAccessFile(sourceFile,"r").getChannel();
144             out = new FileOutputStream(targetFile).getChannel();
145             ByteBuffer buffer = ByteBuffer.allocate(20*1024*1024);
146             while (in.read(buffer) != -1){
147                 buffer.flip();
148                 out.write(buffer);
149                 buffer.clear();
150             }
151         } catch (FileNotFoundException e) {
152             e.printStackTrace();
153         } catch (IOException e) {
154             e.printStackTrace();
155         }finally {
156             try {
157                 out.close();
158                 in.close();
159             } catch (IOException e) {
160                 e.printStackTrace();
161             }
162         }
163
164     }
165 }

原文地址:https://www.cnblogs.com/zhangcece/p/8799316.html

时间: 2024-10-11 20:27:48

对java IO,NIO简单操作的相关文章

JavaLearning:JAVA IO 之内存操作流

package org.fun.io; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; public class ByteArrayDemo { public static void main(String[] args) { String str = "helloworld";// 定义字符串,全部由小写字母组成 ByteArrayOutputStream bos = null;//

11、Java IO NIO

Java IO 方式有很多种,基于不同的 IO 抽象模型和交互方式,可以进行简单区分. 传统的 java.io 包,它基于流模型实现,提供了我们最熟知的一些 IO 功能,比如 File 抽象.输入输出流等.交互方式是同步.阻塞的方式,也就是说,在读取输入流或者写入输出流时,在读.写动作完成之前,线程会一直阻塞在那里,它们之间的调用是可靠的线性顺序.java.io 包的好处是代码比较简单.直观,缺点则是 IO 效率和扩展性存在局限性,容易成为应用性能的瓶颈.很多时候,人们也把 java.net 下

一文理解Java IO/NIO/AIO

  目录 概述 一.IO流(同步.阻塞) 二.NIO(同步.非阻塞) 三.NIO2(异步.非阻塞) 正文 概述 在我们学习Java的IO流之前,我们都要了解几个关键词 同步与异步(synchronous/asynchronous):同步是一种可靠的有序运行机制,当我们进行同步操作时,后续的任务是等待当前调用返回,才会进行下一步:而异步则相反,其他任务不需要等待当前调用返回,通常依靠事件.回调等机制来实现任务间次序关系 阻塞与非阻塞:在进行阻塞操作时,当前线程会处于阻塞状态,无法从事其他任务,只有

Java IO之简单输入输出

Java中的IO分为两个部分,以InputStream和Reader为基类的输入类,以OutputStream和Writer为基类的输出类.其中InputStream和OutputStream以字节为单位进行IO,而Reader和Writer以字符为单位. 除了输入输出,还有一系列类库称为Filter,或成为装饰器.对于输入可用FilterInputStream和FilterReader的派生类,输出可用FilterOutputStream和FilterWriter的派生类,其中FilterIn

Java IO 之File操作

一.File中的两个常量分隔符 package File; import java.io.File; /** * 两个常量 * 1.路径分隔符 ; * 2.名称分隔符 \ (windows) /(linux等) */ @SuppressWarnings("all") public class Demo01 { public static void main(String[] args) { System.out.println(File.pathSeparator); System.o

Java IO NIO详细讲解

1.IO Java IO概述 2.NIO Java NIO浅析 原文地址:https://www.cnblogs.com/yixiu868/p/11396821.html

Java IO 接口--- 字节操作 字符操作 磁盘操作 网络操作

1.IO类库的基本结构 基于字节操作的IO接口分别是InputStream和OutputStream,InputStream的类结构图如下所示: 同InputStream类似,OutputStream类也有着相同的类结构图. 关于各个子类的使用可以参考JDK 的 API 说明文档,这里我们需要注意的是:操作数据的方式是可以组合的,如下所示: InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStrea

行为驱动:Cucumber + Selenium + Java(一) - Cucumber简单操作实例

场景(Scenarios) 场景是Cucumber结构的核心之一.每个场景都以关键字“Scenario:”(或本地化一)开头,后面是可选的场景标题.每个Feature可以有一个或多个场景,每个场景由一个或多个步骤组成.一个非常简单的场景示例可以是: Scenario:验证帮助功能.给定用户导航到Facebook.当用户单击帮助时,将打开帮助页面. 考虑一种情况,其中我们需要不止一次地执行测试场景.假设,我们需要确保登录功能适用于所有类型的订阅用户.这需要多次执行登录功能场景.复制粘贴相同的步骤为

纯java方式连接数据库简单操作

//JDBC全称java datebese connection --java数据库连接 package com.beiwo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ResourceBundle; /*数据库帮助类*/