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();
}
}
09-05