天天看點

javaIO流java Io流拷貝————-字元拷貝

java Io流

先說對象輸入流對象輸出流

寫一個Student類

其中重要知識

1、需要接接口Serializable

2、序列化辨別 private static final long serialVersionUID = 1000L;

3、靜态的成員屬性不進行序列化

4、關鍵字transient 修飾的也不進行序列化

package com.sxt.data;

import java.io.Serializable;

public class Student1 implements Serializable{

private static final long serialVersionUID = 1000L;

public static int classroom=123;//靜态成員屬性。不可以序列化到檔案

private String name;

private int age;

private Sex sex;//關鍵字transient 不進行序列化

public Student1(String name, int age) {

super();

this.name = name;

this.age = age;

}

public void setSex(Sex sex) {

this.sex = sex;

}

public Sex getSex() {

return sex;

}

@Override

public String toString() {

// TODO Auto-generated method stub

return “名字:”+name+” 年齡:”+age+” 性别:”+sex;

}

}

輸入流

package com.sxt.data;

import java.io.FileOutputStream;

import java.io.ObjectOutput;

import java.io.ObjectOutputStream;

import java.io.Serializable;

import javax.sql.rowset.serial.SerialArray;

import com.sxt.utils.CloseUtils;

public class In3 {

public static void main(String[] args) {

ObjectOutputStream oos = null;

try {

oos = new ObjectOutputStream(new FileOutputStream(“cc.txt”));

Student1 s = new Student1(“張三”,10);

s.setSex(Sex.MALE);

oos.writeObject(s);

oos.flush();

} catch (Exception e) {

// TODO: handle exception

}finally {

CloseUtils.close(oos);

}

}

// public static void writeObject(Serializable s){

//

// }

}

輸出流

package com.sxt.data;

import java.io.FileInputStream;

import java.io.ObjectInputStream;

import com.sxt.utils.CloseUtils;

public class In4 {

public static void main(String[] args) {

ObjectInputStream ois=null;

try {

ois = new ObjectInputStream(new FileInputStream(“cc.txt”));

System.out.println(ois.readObject());

} catch (Exception e) {

// TODO: handle exception

}finally {

CloseUtils.close(ois);

}

}

}

寫一個工具類用來關閉流

package com.sxt.utils;

import java.io.Closeable;

import java.io.IOException;

public class CloseUtils {

public static void close(Closeable closeable){
    if(closeable !=null){
        try {
            closeable.close();
        } catch (Exception e) {
            // TODO: handle exception
        }
    }

}
           

}

}

對位元組數組的操作

寫入

package com.sxt.by;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import com.sxt.utils.CloseUtils;

public class By1 {

public static void main(String[] args) {
    String str ="12365";
    ByteArrayOutputStream bats=null;
    try {
        bats=new ByteArrayOutputStream();
        bats.write(str.getBytes());
        bats.flush();

    } catch (Exception e) {
        // TODO: handle exception
    }finally {
        CloseUtils.close(bats);
    }
    System.out.println(new String (bats.toByteArray()));
}
           

}

輸出

package com.sxt.by;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import com.sxt.utils.CloseUtils;

public class By {

public static void main(String[] args) {
    String str="asddsf";
    ByteArrayOutputStream bats=null;
    try {
        bats = new ByteArrayOutputStream();
        bats.write(str.getBytes());
        bats.flush();

    } catch (Exception e) {
        // TODO: handle exception
    }CloseUtils.close(bats);
   System.out.println(bats.toByteArray());
}
           

}

檔案切割

檔案切開——-

package com.sxt.put;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import com.sxt.utils.CloseUtils;

public class Put2 {

public static void main(String[] args) {

File from= new File(“F:\java視屏\KK_Movies\檔案切割\6-14檔案下午檔案.avi”);

File to= new File(“D:\練習1”);

copy(from,to);

}

private static void copy(File from, File to) {

long length = from.length();

int path = 1024*1024*100;

int pathlength =(int)(length%path==0?length/path:length/path+1);

FileInputStream fis=null;

try {

fis = new FileInputStream(from);

for(int i=1;i<=pathlength;i++){

FileOutputStream fos = null;

try {

fos = new FileOutputStream(new File(“D:\練習1\part”+i+”.avi”));

byte [] buf = new byte[1024];

int len=-1;

int count=0;

while((len=fis.read(buf))!=-1){

fos.write(buf,0,len);

fos.flush();

count+=len;

if(count==path){break;}

}

} catch (Exception e) {

// TODO: handle exception

}finally {

CloseUtils.close(fos);

}

}

} catch (Exception e) {

}finally {

CloseUtils.close(fis);

}

}

}

檔案合并——–

package com.sxt.put;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.FilenameFilter;

import com.sxt.utils.CloseUtils;

public class put3 {

public static void main(String[] args) {

File from = new File(“D:\練習1”);

cpFile(from);

}

private static void cpFile(File from) {

File[] listFiles= from.listFiles(new FilenameFilter() {

@Override

public boolean accept(File dir, String name) {

// TODO Auto-generated method stub

return name.startsWith(“part”);

}

});

FileOutputStream fos=null;

try {

fos= new FileOutputStream(“D:\練習1\G.avi”);

for(int i=0;i

拷貝————-字元拷貝

package com.sxt.io2;

import java.io.Closeable;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.FilterWriter;

import com.sxt.utils.CloseUtils;

public class Io5 {

public static void main(String[] args) {

copy(“F:\java視屏\KK_Movies\檔案切割\6-14檔案下午檔案.avi”,”D:\練習\c.avi”);

}

private static void copy(String from, String to) {

long t1 =currentTimeMillis();

FileReader fr=null;

FileWriter fw=null;

try {

fr= new FileReader(from);

fw=new FileWriter(to);

char [] buf = new char[1024];

int len=-1;

while((len=fr.read(buf))!=-1){

fw.write(buf,0,len);

fw.flush();

}

} catch (Exception e) {

e.printStackTrace();

}finally {

CloseUtils.close(fr);

CloseUtils.close(fw);

}

long t2 =currentTimeMillis();

long t3=t2-t1;

System.out.println(t3);

}

private static long currentTimeMillis() {

// TODO Auto-generated method stub

return 0;

}

}

介紹BufferedReader BufferedWriter 高效的輸入輸出

package com.sxt.io2;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import com.sxt.utils.CloseUtils;

public class Buff {

public static void main(String[] args) {

File from= new File(“a.txt”);

File to = new File(“d.txt”);

copy(from,to);

}

private static void copy(File from, File to) {
    BufferedReader br=null;
    BufferedWriter bw=null;
    try {
        br = new BufferedReader(new FileReader(from));
        bw = new BufferedWriter(new FileWriter(to));
        String line = null;
        while((line=br.readLine())!=null){
            bw.write(line);
            bw.flush();
        }

    } catch (Exception e) {
        // TODO: handle exception
    }finally {
        CloseUtils.close(br);
        CloseUtils.close(bw);
    }
}
           

}

位元組拷貝—-萬能拷貝–拷貝視屏是可以看得

package com.sxt.put;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import com.sxt.utils.CloseUtils;

public class Put {

public static void main(String[] args) {

File from = new File(“F:\java視屏\KK_Movies\檔案切割\6-14檔案下午檔案.avi”);

File to = new File(“D:\練習\f.avi”);

copy(from,to);

}

private static void copy(File from, File to) {

long t1 = System.currentTimeMillis();

long length = from.length();

long part=0;

FileInputStream fis=null;

FileOutputStream fos=null;

try {

fis=new FileInputStream(from);

fos=new FileOutputStream(to);

byte [] buf = new byte[1024];

int len=-1;

while((len=fis.read(buf))!=-1){

fos.write(buf, 0, len);

fos.flush();

part+=len;

System.out.println(“進度”+(part*100)/length+”%”);

}

} catch (Exception e) {

// TODO: handle exception

}finally {

CloseUtils.close(fis);

CloseUtils.close(fos);

}

long t2 = System.currentTimeMillis();

System.out.println(t2-t1);

}

}

拷貝 其中有高效的BufferedReader、BufferedWriter。 還有轉化流InputStreamReader、 OutputStreamWriter指定的編碼格式“UTF-8”

OutputStreamWriter。

package com.sxt.url;

import java.io.BufferedInputStream;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.UnsupportedEncodingException;

public class Ur4 {

public static void main(String[] args) throws IOException {

BufferedReader bs=new BufferedReader(new InputStreamReader(new FileInputStream(“index.html”),”UTF-8”));

BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(“In.html”),”UTF-8”));

String line=null;

while((line=bs.readLine())!=null){

bw.write(line);

}
     bw.close(); 
     bs.close();
     }
           

}

繼續閱讀