字符流 vs 字节流
来源:互联网 发布:淘宝假冒品牌申诉 编辑:程序博客网 时间:2024/06/12 21:29
字符流:Writer/Reader
字节流:OutputStream/InputStream
对于非纯文本形式的文件,采用字节流操作;纯文本格式的文件则可以采用字符流操作
package com.test.io;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import org.apache.commons.io.IOUtils;
public class ReadWriteFile {
public String readFile(String fileName) throws IOException {
InputStreamReader inputStreamReader = new InputStreamReader(this
.getClass().getClassLoader().getResourceAsStream(fileName));
BufferedReader reader = new BufferedReader(inputStreamReader);
StringBuffer buffer = new StringBuffer();
String line = reader.readLine();
while (line != null) {
buffer.append(line);
buffer.append("\n");
line = reader.readLine();
}
return buffer.toString();
}
public void writeFile(String data,String fileName) throws IOException {
OutputStream output = new FileOutputStream(ReadWriteFile.class.getClassLoader().getResource("").getPath() + fileName);
IOUtils.write(data, output);
}
public byte[] readFileStream(String fileName) throws IOException {
InputStream inputStream =ReadWriteFile.class.getClassLoader().getResourceAsStream(fileName);
int len = inputStream.available();
byte[] result = new byte[len];
for(int i = 0; i < len; i++){
result[i] = (byte)inputStream.read();
}
return result;
}
public void writeFileStream(byte[] datas,String fileName) throws IOException {
OutputStream output = new FileOutputStream(ReadWriteFile.class.getClassLoader().getResource("").getPath() + fileName,true);
BufferedOutputStream bufferOut = new BufferedOutputStream(output);
bufferOut.write(datas);
bufferOut.close();
}
public static void main(String[] args) throws IOException{
String inputfileName = "input1.jpg";
String outputfileName = "output";
ReadWriteFile instance = new ReadWriteFile();
byte[] inputFile = instance.readFileStream(inputfileName);
instance.writeFileStream(inputFile, outputfileName);
}
}
==================================================
package com.test.io;
import static org.junit.Assert.*;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import org.apache.commons.io.IOUtils;
import org.junit.Test;
public class StreamWriterCompare {
@Test
public void testStream() throws IOException {
String fileName = "testStream";
OutputStream out = null;
out = new FileOutputStream(StreamWriterCompare.class.getClassLoader().getResource("").getPath() + fileName,false);//overwrite content in file "testStream"
String str = "Hello World!!!";
BufferedOutputStream bufferOut = new BufferedOutputStream(out);
byte b[] = str.getBytes();
bufferOut.write(b);
bufferOut.close();
out = new FileOutputStream(StreamWriterCompare.class.getClassLoader().getResource("").getPath() + fileName,true);//append content in file "testStream"
out.write(b);
out.close();
}
@Test
public void testWriter() throws IOException {
String fileName = "testWriter";
Writer out = null;
out = new OutputStreamWriter(new FileOutputStream(StreamWriterCompare.class.getClassLoader().getResource("").getPath() + fileName,true));//append content to file "testWriter"
String str = "Hello World!!!";
out.write(str);
out.close();
}
@Test
public void testCopyStream() throws IOException {
String inputFile = "testCopyStream-input.jpg";
String outputFile = "testCopyStream-output";
InputStream inputStream =StreamWriterCompare.class.getClassLoader().getResourceAsStream(inputFile);
FileOutputStream outStream = new FileOutputStream(StreamWriterCompare.class.getClassLoader().getResource("").getPath() + outputFile);
assertNotNull(inputStream);
assertNotNull(outStream);
IOUtils.copy(inputStream, outStream);
inputStream.close();
outStream.close();
}
}
- 字符流 vs 字节流
- 字符流&字节流
- 字节流&字符流
- 字节流、字符流
- 字符流-->字节流
- 字符流字节流
- 字节流/字符流
- 字节流 字符流
- 字节流,字符流
- 字节流字符流
- 输入输出 字节,字符流
- 字节字符流
- 字节流转字符流
- JAVA字节字符流
- 字符字节流
- 6.13字符字节流
- 字节字符流笔记
- 字节流转字符流
- Hive学习之Hive数据库DDL
- 去掉多余的tableview line
- DSPLINK DEMO解析之SCALE【转】
- Postel ActiveX Control支持Postel的ActiveX控件
- PL/SQL 查询中文乱码问题
- 字符流 vs 字节流
- Android页面切换时的动画效果(overridePendingTransition)
- ATL学习笔记(3): QueryInterface功能的实现
- pk12 证书生成 用于RSA非对称加密
- 欢迎来到Swift的世界(Welcome to Swift)
- 收藏的JAVA面试题大全
- NORDIC(一)Nordic_Keil的内存配置
- UML 状态图
- ATL学习笔记(4): COM接口映射表