在java中字符流怎么复制_Java 使用字符流拷贝数据
使用字符流拷贝数据时,需要注意在文件末尾处的数据,因为最后一次读取的长度不会刚好与数组input长度相同,所以需要引入新的变量来存储每次读取的长度。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
public class RWByCharStream {
public static void main(String[] args) {
try {
//File file=new File("java.txt");
FileInputStream fis=new FileInputStream("java.txt");
InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
FileOutputStream fos=new FileOutputStream("java_copy.txt");
OutputStreamWriter osw=new OutputStreamWriter(fos);
char input[]=new char[100];
int f=0;
while((f=isr.read(input))!=-1) {
//System.out.println(new String(input,0,f));
osw.write(input,0,f);
}
isr.close();
fis.close();
osw.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用缓冲字符流读写数据:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
public class RWByBufferedCharStream {
public static void main(String[] args) {
try {
//File file=new File("java.txt");
FileInputStream fis=new FileInputStream("java.txt");
InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
FileOutputStream fos=new FileOutputStream("java_copy_buffer.txt");
OutputStreamWriter osw=new OutputStreamWriter(fos);
BufferedReader br=new BufferedReader(isr);
BufferedWriter bw=new BufferedWriter(osw);
String input;
while((input=br.readLine())!=null) {
bw.write(input);
}
bw.close();
br.close();
isr.close();
fis.close();
osw.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
拷贝的文件中没有换行,全在同一行。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
public class RWByBufferedCharStream {
public static void main(String[] args) {
try {
//File file=new File("java.txt");
FileInputStream fis=new FileInputStream("java.txt");
InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
FileOutputStream fos=new FileOutputStream("java_copy_buffer.txt");
OutputStreamWriter osw=new OutputStreamWriter(fos);
BufferedReader br=new BufferedReader(isr);
//BufferedWriter bw=new BufferedWriter(osw);
PrintWriter pw=new PrintWriter(osw);
String input;
while((input=br.readLine())!=null) {
//bw.write(input);
pw.println(input);
}
//bw.close();
pw.flush(); //将最后一次读取的内容从缓冲区读出来
pw.close();
br.close();
isr.close();
fis.close();
osw.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用PrintWriter代替BufferedWriter,方便处理最后一次读取的内容和每行里的换行。
在java中字符流怎么复制_Java 使用字符流拷贝数据相关推荐
- java中getchars是什么意思_java中的getChars()方法
getChars public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此字符串复制到目标字符数组. ...
- [初级]Java中的switch对整型、字符型、字符串的具体实现细节
转载自 [初级]Java中的switch对整型.字符型.字符串的具体实现细节 Java 7中,switch的参数可以是String类型了,这对我们来说是一个很方便的改进.到目前为止switch支持这样 ...
- java中ch或者的符号_java 中文标点符号判断
背景 最近需要处理一些文本,发现想细化一些分类,以前的知识短板就暴露出来了. 这一篇主要是针对网上的资料收集整理. 偏于以后学习查阅. 中文标点符号判断 Java Character 实现Unicod ...
- Java中long和int互相转换,不改变原有数据
Java中long和int互相转换,不改变原有数据 文章目录 Java中long和int互相转换,不改变原有数据 测试方法,及封装好的方法 封装好之后的方法 测试方法,及封装好的方法 @Test pu ...
- java中的输入输出流概念_java输入输出--I/O流的概念和划分
理解数据流 数据流(Stream)是一组有顺序的,有起点的,有终点的字节集合,是对输入和输出的总称和抽象. 一般地,数据流分为 输入流(InputStream)和输出流(OutputStream).输 ...
- java中字符串的精确匹配_Java最佳实践–字符串性能和精确字符串匹配
java中字符串的精确匹配 在使用Java编程语言时,我们将继续讨论与建议的实践有关的系列文章,我们将讨论String性能调优. 我们将专注于如何有效地处理字符串创建, 字符串更改和字符串匹配操作. ...
- java i/o 流详解_java I/O流详解
概况 I/O流主要分为二大类别:字符流和字节流. 字节流(基本流) 1.字节输入流 类名:FileInputStream 特点:读(对文件进行读取操作) 父类:InputStream ...
- java中输出时 什么作用_JAVA中输入和输出处理(Java I/O)重点总结
文件-使用File类操作文件: 什么是文件? 文件可认为是相关记录或放在一起的数据的集合. 文件一般存储在哪里? 储存在存储设备里. Java程序如何访问文件? Java API:java.io ...
- Java中对象的深复制(深克隆)和浅复制(浅克隆)介绍
1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. ⑵ ...
最新文章
- Mac打包Android的apk,[Mac][React Native][Android] 打包成apk
- [20150608]dbms_random.value.txt
- 【深度学习】图像输入网络必要的处理流程
- VS2010中重命名项目
- 高性能WEB开发(6) - web性能测试工具推荐
- 有了 for (;;) 为什么还需要 while (true) ? 到底哪个更快?
- QT绘制百分比条形图。
- VC编辑框(EDIT)的自动换行、自动滚屏 、到指定行数自动清空
- Java比较器概述即代码讲解实现
- [Android1.6]横竖屏切换时自动弹出键盘的问题
- DNN Mail功能介绍 [DNN 3.2.2]
- matlab最小费用最大流函数,Matlab最小费用最大流算法通用程序
- UML设计(团队作业)
- Redis 3.2.x版本 redis.conf 的配置文件参数详解
- 数据恢复软件分享(第二篇)
- 对比学习(Contrastive Learning) (1)
- Duilib中caption的问题
- 关于 IOS 的299$ 美元企业模式(In House)及Installing Apps Wirelessly 详解
- 聚沙成塔-linux 常用命令
- struts2 超链接a标签执行action
热门文章
- chromedriver : Saving to 安装卡住 解决
- oracle选择外键列,Oracle外键列上是否需要索引?
- TCP面向连接中的“连接”和“可靠”与“不可靠”
- 使用apache FileUtils下载文件
- middle函数C语言,C语言函数调用栈(三)
- 【C语言进阶深度学习记录】十七 宏定义的使用与分析
- 【C++深度剖析教程6】C++之友元
- BUUOJ reverse 不一样的flag
- 集腋成裘-10-ECharts -未知-03
- [HAOI2016]食物链