java流操作与字符编码问题

package wen_jian;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;



public class p1 {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
	/*	String pathname="p3.txt";
		File f=new File(pathname);
		//f.createNewFile();
		FileInputStream in=new FileInputStream(f);
		//FileOutputStream oo=new FileOutputStream(f);
		FileOutputStream out=new FileOutputStream("pp.txt");
        int p;
        int op='\n'; // 换行为10   回车为13
        System.out.println(op);
        op='\r';
      //  System.out.println(op);
     //   UTF-8 编码中,中文字符占 3 个字节,英文字符占 1 个字节
      /*  Java 的内存编码使用双字节编码 UTF-16be,这不是指 Java 只支持这一种编码方式,
        而是说 char 这种类型使用 UTF-16be 进行编码。char 类型占 16 位,也就是两个字节,
        Java 使用这种双字节编码是为了让一个中文或者一个英文都能使用一个 char 来存储。*/
        char ch='我';
        // 电脑中的 txt文件采用utf 8编码   
        System.out.println((int)ch);
        int bn=(int)ch;
        char m=(char)bn;
        System.out.println(m);
        
        /*while((p=in.read())!=-1)
        {
        	out.write(p);
        	System.out.println((char)p);// 回车换行 ln 自带换行
        }*/
     //    out.write((int)ch);   // 按照这种方式写入产生乱码
       
       /* void write(byte[] b);//把字节数组写入文件
        void write(byte[] b, int off, int len);//把从字节数组b中的off下标开始,把字节写入文件,写入len个字节。
        void write(int b);把int低八位写入文件,则写一个int(32位)要写四次: 每次右移八位.*/
        
       /* FileOutputStream(File file);//如果文件不存在则创建文件,如果文件存在则删除文件后重新创建文件。
        FileOutputStream(File file, boolean append);//第二个参数如果为true的话在文件后面追加写入的内容。
        FileOutputStream(String name);//和第1个一样
        FileOutputStream(String name, boolean append)
        
        
        
       ***********FileOutputStream(FileDescriptor fdObj);//通过文件描述符创建文件输出字节流*/
        
      //  copyFile(pathname, "pp.txt");
      
       
    	/*in.close();
        out.close();*/
        
        OutputStreamWriter osw =new OutputStreamWriter(new FileOutputStream("pp.txt"));
        osw.write("你");
        osw.close();
		// FileReader fileReader = new FileReader(filePath);
		  // BufferedReader bufferedReader = new BufferedReader(fileReader);
		/*BufferedWriter bw=new BufferedWriter(new FileWriter(new File("pp.txt")));
		char []chh= {'我'};
		Character ui=ch;
	    
		bw.write(chh);
		bw.newLine();
		bw.write("你是");
		//bw.flush();
	   
		String str1 = "中";
	   	bw.write(str1);
		byte[] bytes = str1.getBytes();
		System.out.println(bytes.length);
		String str2 = new String(bytes);
		System.out.println(str2);
		//在ecplise平台下默认的编码形式为gbk也叫utf-16, 写入磁盘时 系统在敏感区检查 自动转码 utf-16 会转成系统的平台编码 一般为utf-8
		bw.write(str2);
        bw.close();*/
	}
	public static void copyFile(String src, String dist) throws IOException {
	    FileInputStream in = new FileInputStream(src);
	    FileOutputStream out = new FileOutputStream(dist);//没有缓冲
	    byte[] buffer = new byte[20 * 1024];
	    int cnt;

	    // read() 最多读取 buffer.length 个字节
	    // 返回的是实际读取的个数
	    // 返回 -1 的时候表示读到 eof,即文件尾
	    while ((cnt = in.read(buffer, 0, buffer.length)) != -1) {
	        out.write(buffer, 0, cnt);
	        
	    }
       in.close(); 
       // out.flush();
	    out.close();
	  
	}
	public static void readFileContent(String filePath) throws IOException {

	    FileReader fileReader = new FileReader(filePath);
	    BufferedReader bufferedReader = new BufferedReader(fileReader);

	    String line;
	    while ((line = bufferedReader.readLine()) != null) {
	        System.out.println(line);
	    }

	    // 装饰者模式使得 BufferedReader 组合了一个 Reader 对象
	    // 在调用 BufferedReader 的 close() 方法时会去调用 Reader 的 close() 方法
	    // 因此只要一个 close() 调用即可
	    bufferedReader.close();
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值