您的位置:首页 > 其它

io加强

2016-05-28 14:19 239 查看
io我们只要熟记一下四步就ok了









下面我们通过两个题目来熟悉io操作的四步:package cn.hncu.app;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintStream;

public class IoTest {

public static void main(String[] args) {
test1();
test2();
test3();
test4();
test5();
}
/**
* 读取一个文本文件,将文本按照指定的编码表UTF-8写入到另一个文件中
*/
public static void test5() {
try {
FileReader fr = new FileReader("test\\test5In.txt");
FileOutputStream fout =new FileOutputStream("test\\test5Out.txt");

OutputStreamWriter osw = new OutputStreamWriter(fout,"utf-8");
BufferedReader br = new BufferedReader(fr);
BufferedWriter bw = new BufferedWriter(osw);

String str = null;
while((str=br.readLine())!=null){
bw.write(str);
bw.newLine();
}
br.close();
bw.close();

} catch (IOException e) {
e.printStackTrace();
}

}

/**
* 读取一个文本文件,显示到显示器上
*/
public static void test4() {
try {
FileReader fr = new FileReader("test\\test4In.txt");
PrintStream fs = System.out;
OutputStreamWriter osw = new OutputStreamWriter(fs);
BufferedReader br = new BufferedReader(fr);
BufferedWriter bw = new BufferedWriter(osw);

String str = null;
while((str=br.readLine())!=null){
bw.write(str);
bw.newLine();
}
br.close();
bw.close();

} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 读取键盘录入,存储到一个文件中
*/
public static void test3() {
try {
InputStream fr = System.in;
FileWriter fw = new FileWriter("test\\test3Out.txt");

InputStreamReader isr = new InputStreamReader(fr);
BufferedReader br = new BufferedReader(isr);
BufferedWriter bw = new BufferedWriter(fw);
String str = null;
while((str=br.readLine())!=null){
if("over".equals(str)){
break;
}
bw.write(str);
bw.newLine();
}
br.close();
bw.close();

} catch (IOException e) {
e.printStackTrace();
}

}
/**
* 复制一个图片文件
*/
public static void test2() {
try {
FileInputStream fin = new FileInputStream("test\\GuiQi.jpg");
FileOutputStream fout = new FileOutputStream("test\\DemoCrice.jpg");

BufferedInputStream bis = new BufferedInputStream(fin);
BufferedOutputStream bos = new BufferedOutputStream(fout);
byte[] buf = new byte[10];
int len = 0;
while((len= bis.read(buf))!=-1){
bos.write(buf, 0, len);
}
bos.close();
bis.close();

} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 复制一个文本文件
*/
public static void test1() {
try {
FileReader fr = new FileReader("test\\test1In.txt");
FileWriter fw = new FileWriter("test\\test1Out.txt");

BufferedReader br = new BufferedReader(fr);
BufferedWriter bw = new BufferedWriter(fw);

String str = null;
while((str=br.readLine())!=null){
bw.write(str);
bw.newLine();
}
br.close();
bw.close();

} catch (IOException e) {
e.printStackTrace();
}

}

}




package cn.hncu.app;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;

public class Train1 {
public static void main(String[] args) {
// qieGe();
heBing();

}
/**
* 合并文件
*/
private static void heBing() {
//输入
try {
FileInputStream fin1 =new FileInputStream("test\\train1Out.txt");
FileInputStream fin2 =new FileInputStream("test\\train2Out.txt");
FileInputStream fin3 =new FileInputStream("test\\train3Out.txt");
FileInputStream fin4 =new FileInputStream("test\\train4Out.txt");
FileInputStream fin5 =new FileInputStream("test\\train5Out.txt");
FileInputStream fin6 =new FileInputStream("test\\train6Out.txt");
FileInputStream fin7 =new FileInputStream("test\\train7Out.txt");
FileInputStream fin8 =new FileInputStream("test\\train8Out.txt");
ArrayList<FileInputStream> v = new ArrayList<FileInputStream>();
v.add(fin1);
v.add(fin2);
v.add(fin3);
v.add(fin4);
v.add(fin5);
v.add(fin6);
v.add(fin7);
v.add(fin8);
Enumeration en= Collections.enumeration(v);
SequenceInputStream sis = new SequenceInputStream(en);
//输出
FileOutputStream fout = new FileOutputStream("test\\train1heBingOut.txt");
BufferedOutputStream bos =new BufferedOutputStream(fout);

byte[] buf =new byte[1024];
int len = 0;
while((len=sis.read(buf))!=-1){
bos.write(buf, 0, len);
}

bos.close();
sis.close();
} catch (IOException e) {
e.printStackTrace();
}

}
/**
* 按指定大小切(如每份最大不超过1KB),
*
*/
private static void qieGe() {
try {
//输入
FileInputStream fin = new FileInputStream("test\\train1In.txt");
BufferedInputStream bis = new BufferedInputStream(fin);
int count=1;
//输出

byte[] buf= new byte[1024];
int len = 0;
while((len=bis.read(buf))!=-1){
FileOutputStream fout = new FileOutputStream("test\\train"+count+"Out.txt");
BufferedOutputStream bos = new BufferedOutputStream(fout);
bos.write(buf,0,len);
count++;
bos.flush();
}
bis.close();

} catch (IOException e) {
e.printStackTrace();
}
}

}



package cn.hncu.app;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import org.junit.Test;

public class StringCut {
public static void main(String[] args) {
String str = "ab飝";
try {
byte[] buf = str.getBytes("gbk");
for(byte b:buf){
System.out.print(b+" ");
}
System.out.println();
for(int i=0;i<=buf.length;i++){
System.out.println(i+":"+CutString(str,i));
}
} catch (IOException e) {
e.printStackTrace();
}

}
/**
* 这里初入JUnit :不通过main来测试我们的方法的运行状况。
* @throws IOException
*/
@Test
public void test() throws IOException{
String str ="ab你好飝";
byte[] buf = str.getBytes("gbk");
for(byte b:buf){
System.out.print(b+" ");

}
System.out.println();
}
private static String CutString(String str, int len) throws IOException {
String encoding = System.getProperty("file.encoding");
if("gbk".equalsIgnoreCase(encoding)){
return CutStringGbk(str, len);
}
if("utf-8".equalsIgnoreCase(encoding)){
return CutStringUtf8(str, len);
}
throw new RuntimeException("不支持当前系统的编码");
}
private static String CutStringUtf8(String str, int len)throws IOException {
byte[] buf = str.getBytes("utf-8");
int count=0;
for(int i=len-1;i>=0;i--){
if(buf[i]<0){
count++;
}else{
break;
}
}
return new String(buf,0,len-(count%3));
}
private static String CutStringGbk(String str, int len) throws IOException {
byte[] buf = str.getBytes("gbk");
int count=0;
for(int i=len-1;i>=0;i--){
if(buf[i]<0){
count++;
}else{
break;
}
}
return new String(buf,0,len-(count%2));
}

}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: