输出流FileWriter和FileInputStream,和一个可以处理中文的OutputStreamWriter,如果要对中文进行传输和写入用OutputStreamWriter和InputStreamReader

FileOutputStream如果不理解可以查看API描述这里不再介绍

package cn.bean.demo.inoutstream;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class FileOutPutStreamTest {

	public static void main(String[] args) {
		testReadWrite();
	}

	static void testReadWrite() {

		// 获从输入流,读取目标资源信息
		try (InputStream in = new FileInputStream("String1.txt");
			 OutputStream out = new FileOutputStream("String2.txt"))
		{
             //每次读取的内容放入到一个缓冲区
			 byte[] b=new byte[20];
			 //每次放入到缓冲区的字节个数
			 int len=0;
			 while((len=in.read(b))!=-1){
				 out.write(b, 0, len);
			 }

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

  

OutputStreamWriter和FileWriter 的用法[OutputStreamWriter可以用来读取中文和写入中文,但是要保证写入的目标创建的文件也是utf8,系统的编码和项目中的编码,如果项目是GBK,创建和输出后也会是乱码]

package cn.bean.demo.readwrite;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;

public class WreteTest {

	public static void main(String[] args) {
		//testReadWrite();
		testOutputStreamWriter();
	}

	static void testReadWrite() {
		try (Reader reader = new FileReader("String1.txt"); Writer writer = new FileWriter("String2.txt");) {
			// 创建每次读取数据的缓冲区,可以想象成水桶
			char[] c = new char[19];
			// 每次装入缓冲区的字节个数
			int len = 0;
			while ((len = reader.read(c)) != -1) {
				// 把每次装入桶中的内容写入到文件中,每次写入0到len,因为len是每次读取到的实际内容个数
				writer.write(c, 0, len);
			}

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	static void testOutputStreamWriter() {

		try (InputStream in = new FileInputStream("hello.txt");
				Reader read = new InputStreamReader(in, "utf-8");
				OutputStream out = new FileOutputStream("hell22.txt");
				Writer writer = new OutputStreamWriter(out, "utf-8");)

		{

			//创建缓冲区用来存放每次读取的数据
			char[] ch=new char[50];
			//每次放入到缓冲区的数据的实际个数
			int len=0;
			String content="";
			while((len=read.read(ch))!=-1){                                // 这样也可以 writer.write(ch, 0, len);
				content+=new String(ch,0,len);
			}
			writer.write(content);
			System.out.println(content);

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

  

时间: 2024-12-31 07:15:36

输出流FileWriter和FileInputStream,和一个可以处理中文的OutputStreamWriter,如果要对中文进行传输和写入用OutputStreamWriter和InputStreamReader的相关文章

java 随机生成一个中文、判断某个string是否是中文以及打印出全部的中文

现在网上大多数用于判断中文字符的是 U+4E00..U+9FA5 这个范围是只是"中日韩统一表意文字"这个区间,但这不是全部,如果要全部包含,则还要他们的扩展集.部首.象形字.注间字母等等; 2E80-A4CF: 包含了中日朝部首补充.康熙部首.表意文字描述符.中日朝符号和标点.日文平假名.日文片假名.注音字母.谚文兼容字母.象形字注释标志.注音字母扩展.中日朝笔画.日文片假名语音扩展.带圈中日朝字母和月份.中日朝兼容.中日朝统一表意文字扩展A.易经六十四卦符号.中日韩统一表意文字.彝

小程序1:输入一个文件名,检测是否存在;如果不存在创建文件并写入内容

实现内容:输入一个文件名,检测是否存在:如果不存在创建文件并写入内容代码实现如下: 注意事项: 1.python os.path模块中  os.path.exists(path)  #路径存在则返回True,路径损坏返回False:::所以输入应该是“路径”,不是随意一个文件夹 2.IOError: [Errno 22] invalid mode ('r') or filename 这种错误的出现是在使用built-in函数file()或者open()的时候:因为文件的打开模式不对或文件名有问题

Java IO输入输出流 FileWriter 字符流

字节缓冲流 //为什么要使用包装流,使用包装流是为了提高读写操作的性能. public class Packing_flowDemo { public static void main(String[] args) throws Exception { File file = new File("file/packing_flow.txt"); //包装流的写法,缓冲区内存大小.1024*8=8192 (byte) // BufferedOutputStream packing = n

一个简单RPC框架是如何炼成的(V)——引入传输层

开局篇我们说了,RPC框架的四个核心内容 RPC数据的传输. RPC消息 协议 RPC服务注册 RPC消息处理    接下来处理数据传输.实际应用场景一般都是基于socket.socket代码比较多,使用起来也比较麻烦.而且具体的传输通道使用socket或者其他的方式,如更上层的http,或者android里的binder,都是可替换的,只是具体的一种实现而已.所以,这里我就偷个懒,只是引入一个很简单的Connection类,用来描述一下如何将数据传输 这一层给独立出来. 首先简单列出Conne

添加一个txt文件(例如在桌面),利用后台对文件写入内容

string str = "今天天气好晴朗,处处好风光."; //需要将字符串转化成字节数组 byte[] buffer = Encoding.Default.GetBytes(str); File.WriteAllBytes(@"C:\Users\shuai\Desktop\new.txt",buffer);//没有这个文件的话会给你创建一个,有这个文件的话,会给你覆盖掉. Console.WriteLine("写入成功"); Console.

解决了一个困扰我近一年的vim显示中文乱码的问题

今天解决了vi命令打开日志文件中文总是显示乱码的问题.由于项目组中的日志包含一些特殊字符,所以使用vim打开日志文件时总是不能正确识别出文件字符编码.此时用:set fileencoding命令可以看出vim把文件编码识别成latin1. 在这种情况下无论终端设置成gbk还是utf-8编码,都不能正确显示中文. 解决方法有两个: 1 使用:e ++enc=utf-8命令强制让vim以utf-8编码重新打开文件 注意:由于我们程序有时也会输出gbk编码的中文字符日志,所以有时还会有少量乱码. 2

小白学Java:I/O流

目录 小白学Java:I/O流 基本分类 发展史 文件字符流 输出的基本结构 流中的异常处理 异常处理新方式 读取的基本结构 运用输入与输出 文件字节流 缓冲流 字符缓冲流 装饰设计模式 转换流(适配器) 适配器设计模式 标准流/系统流 标准流分类 打印流 合并流 序列化/反序列化流 序列化对象 小白学Java:I/O流 流,表示任何有能力产生数据的数据源对象或者是有能力接收数据的接收端对象,它屏蔽了实际的I/O设备中处理数据的细节. 基本分类 根据方向 输入流:数据从外部流向程序,例如从文件中

FileInputStream、FileReader、FileInputStream、FileWriter使用小结

本文是基于Linux环境运行,读者阅读前需要具备一定Linux知识 InputStream包含如下三个方法: int read():从输入流中读取单个字节,返回所读取的字节数据(字节数据可直接转化为int类型) int read(byte[] b):从输入流中最多读取b.length个字节的数据,并将其存储在字节数组b中,返回实际读取的字节数 int read(byte[] b, int off, int len):从输入流中最多读取len个字节的数据,并将其存储在数组b中:放入数组b中时,并不

day20 文件输入流和输出流FileInputStream FileOutputStream

1.概念 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的类都在IO包中 流按流向分为两种:输入流,输出流. 流按操作类型分为两种: 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的 字符流 : 字符流只能操作纯字符数据,比较方便. 2.IO流常用父类 字节流的抽象父类: InputStream OutputStream 字符流的抽象父类: Reader Writer IO流(FileInputStream)read()一