JAVA 中的IO操作

来源:互联网 发布:电视台曝光网络黄金egd 编辑:程序博客网 时间:2024/04/30 14:36

1、使用字节流读写数据

import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class Lmt02 {public static void main(String[] args) {// 读数据try {FileInputStream fileInputStream = new FileInputStream("hello.txt");// 创建文件的字节输出流byte input[] = new byte[11];// 字节数组大小不超过文件大小fileInputStream.read(input);String InputString = new String(input, "GBK");System.out.println(InputString);fileInputStream.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}// 写数据try {FileOutputStream fileOutputStream = new FileOutputStream("write.txt");String outPutString = "Write String";byte outPutByte[] = outPutString.getBytes();fileOutputStream.write(outPutByte);fileOutputStream.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}// 文件拷贝try {FileInputStream fInputStream = new FileInputStream("copy.txt");FileOutputStream fOutputStream = new FileOutputStream("new copy.txt");byte copeByte[] = new byte[9];while (fInputStream.read(copeByte) != -1) {fOutputStream.write(copeByte);}fInputStream.close();fOutputStream.close();System.out.println("拷贝完成!");} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}

2、使用带缓冲的字节流读写数据

import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class Lmt03 {public static void main(String[] args) {try {FileInputStream fileInputStream = new FileInputStream("Java IO简介.mp4");BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream, 9*1024);//设置了9K大小的缓冲区FileOutputStream fileOutputStream = new FileOutputStream("Java IO简介 副本.mp4");BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream, 9*1024);byte input[] = new byte[1024];//设置每次读取的字节大小int count = 0;long begin = System.currentTimeMillis();while (bufferedInputStream.read(input) != -1) {bufferedOutputStream.write(input);count++;}bufferedInputStream.close();fileInputStream.close();bufferedOutputStream.close();bufferedInputStream.close();System.out.println("用时:" + (System.currentTimeMillis() - begin) + "ms");System.out.println("读取了:" + count + "次");} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}

3、使用字符流读写数据

import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;public class Lmt01 {public static void main(String[] args) {// 字符流读取数据try {File file = new File("Text.txt");FileInputStream fileInputStream = new FileInputStream(file);InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "GBK");// 将字节流转换成字符流char inputChar[] = new char[99];int l = 0;while ((l = inputStreamReader.read(inputChar)) != -1) {String inputString = new String(inputChar, 0, l);System.out.println(inputString);// 自动调用inputChar.toString();}/* * int l = 0; while ((l = inputStreamReader.read(inputChar)) != -1){ *  System.out.println(new String(inputChar, 0, l));//防止输出文件末尾的冗余量 * } */inputStreamReader.close();fileInputStream.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}// 使用字符流写数据,实现文件拷贝try {FileInputStream fileInputStream = new FileInputStream("Text.txt");InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "GBK");FileOutputStream fileOutputStream = new FileOutputStream("Copy_Text.txt");OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "GBK");char input[] = new char[99];int l = 0;while ((l = inputStreamReader.read(input)) != -1) {String inputString = new String(input, 0, l);outputStreamWriter.write(inputString);}/* * while ((l = inputStreamReader.read(input)) != -1) { * outputStreamWriter.write(input,0,l); } */outputStreamWriter.close();fileOutputStream.close();inputStreamReader.close();fileInputStream.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}

4、使用带有缓冲的字符流读写数据

//import java.io.BufferedWriter;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.io.UnsupportedEncodingException;public class Lmt02 {public static void main(String[] args){try {FileInputStream fileInputStream = new FileInputStream("Text.txt");InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "GBK");BufferedReader bufferedReader = new BufferedReader(inputStreamReader);FileOutputStream fileOutputStream = new FileOutputStream("Copy_Text_Buffer.txt");OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "GBK");//BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);PrintWriter printWriter = new PrintWriter(outputStreamWriter);//自动flush:PrintWriter printWriter = new PrintWriter(outputStreamWriter,true);String inputString;while ( (inputString = bufferedReader.readLine()) !=null) { //bufferedWriter.write(inputString);//不会自动写入换行符printWriter.println(inputString);}bufferedReader.close();//bufferWriter.flush();//bufferedWriter.close();printWriter.flush();//当数据未填满缓冲区,缓冲区的数据不会写入,通过flush可以全部写入printWriter.close();outputStreamWriter.close();fileOutputStream.close();inputStreamReader.close();fileInputStream.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}

5、FileReader与FileWriter

import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class Lmt03 {public static void main(String[] args) {try {FileReader fileReader = new FileReader("hello.txt");//读取文件文本数据BufferedReader bufferedReader = new BufferedReader(fileReader);FileWriter fileWriter = new FileWriter("hello_File.txt");BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);String Line;while ((Line = bufferedReader.readLine())!=null) {bufferedWriter.write(Line+"\n");}bufferedWriter.flush();//???bufferedWriter.close();fileWriter.close();bufferedReader.close();fileReader.close();System.out.println("finish");} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}

6、RandomAccessFile随机文件读写

import java.io.File;import java.io.IOException;import java.io.RandomAccessFile;public class Lmt01 {public static void main(String[] args) throws IOException {File file = new File("People.txt");RandomAccessFile randomAccessFile1 = new RandomAccessFile(file, "rw");// 没有则创建String name;String ID;name = "zhangsan ";ID = "9876543210";randomAccessFile1.writeBytes(name);randomAccessFile1.writeBytes(ID);name = "lisi     ";ID = "0123456789";randomAccessFile1.writeBytes(name);//randomAccessFile1.writeBytes(ID);byte[] b = ID.getBytes();for (int i = 0; i < b.length; i++) {randomAccessFile1.writeByte(b[i]);}randomAccessFile1.close();// 写入操作完成。文件必须关闭。// 下面进行读取操作RandomAccessFile randomAccessFile2 = new RandomAccessFile(file, "r");// r表示模式为读// 读取第2个人的信息byte[] nameByte = new byte[9], IDByte = new byte[10];randomAccessFile2.skipBytes(1 * 19);// 跳过12个字节,即跳过第1个人的信息for (int i = 0; i < nameByte.length; i++) {nameByte[i] = randomAccessFile2.readByte();}for (int i = 0; i < IDByte.length; i++) {IDByte[i] = randomAccessFile2.readByte();}name = new String(nameByte);ID = new String(IDByte);System.out.println("姓名:" + name + ",身份证号码:" + ID);// 读取第1个人的信息randomAccessFile2.seek(0);// 回到第1个字节前for (int i = 0; i < nameByte.length; i++) {nameByte[i] = randomAccessFile2.readByte();}for (int i = 0; i < IDByte.length; i++) {IDByte[i] = randomAccessFile2.readByte();}name = new String(nameByte, "GBK");ID = new String(IDByte);System.out.println("姓名:" + name + ",身份证号码:" + ID);randomAccessFile2.close();}}

7、使用Apache IO库操作IO与文件

http://commons.apache.org/proper/commons-io/download_io.cgi     下载Apache IO库






1 0
原创粉丝点击