package com.io; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.LinkedList; /** * 緩沖讀入文件 * @author Administrator * */ public class BufferedInputFile { public static String read(String filename) throws IOException{ //reading input by lines: BufferedReader in = new BufferedReader(new FileReader(filename)); String s; StringBuilder sb= new StringBuilder(); while((s=in.readLine())!=null){ sb.append(s+"\n"); } in.close(); return sb.toString(); } //test1,打開一個文本文件,每次讀取一行內容,將每行作為一個string讀入,並將該string對象存入linklist中,逆序打印linklist public static void printLinkList(String fileName) throws IOException{ BufferedReader in = new BufferedReader(new FileReader("C:/Users/Administrator/Desktop/exec.txt")); String string; LinkedList<String> list = new LinkedList<String>(); while((string=in.readLine())!=null){ list.add(string); } /*for(int i=list.size();i>=0;i--){ System.out.println(list.get(i)); }*/ java.util.ListIterator<String> item = list.listIterator(list.size()); while(item.hasPrevious()){ System.out.println(item.previous()); } while(item.hasNext()){ System.out.println(item.next()); } /** * 結果: * 4-->4-->4:4:4:ghdgml11 3-->3-->3:3:3:flypiger 2-->2-->2:2:2:ghdgml11 1-->1-->1:1:1:flypiger */ } public static void main(String[] args) throws IOException { //System.out.println(read("C:/Users/Administrator/Desktop/exec.txt")); printLinkList("C:/Users/Administrator/Desktop/exec.txt"); } }
不要問為什么,代碼詮釋一切
package com.io; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.io.StringReader; /** * 基本的io * @author Administrator * */ public class BasicFileOutput { public static String file = "C:/Users/Administrator/Desktop/exec.txt"; public static String file1 = "C:/Users/Administrator/Desktop/exe.txt"; public static void main(String[] args) throws IOException { //使用BufferedReader緩沖讀入流,使用StringReader包裝一個BufferedInputFile.read方法讀取的字符串文件流 System.out.println(BufferedInputFile.read(file)); BufferedReader in = new BufferedReader(new StringReader(BufferedInputFile.read(file))); //FileWriter可以寫數據的對象,用BufferedWriter緩沖流包裝提升性能,再用PrintWriter包裝提升格式 PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file1))); int lineCount = 1; String string; while((string=in.readLine())!=null){ out.println(lineCount++ +": "+string); } out.flush(); out.close(); in.close(); System.out.println(BufferedInputFile.read(file1)); } }
package com.io; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; /** * 讀取二進制文件 * @author Administrator * */ public class BinaryFile { public static byte[] read(File file) throws IOException{ BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(file)); byte[] data = new byte[inputStream.available()]; inputStream.read(data); inputStream.close(); return data; } public static byte[] read(String file) throws IOException{ return read(new File(file).getAbsoluteFile()); } }
package com.io; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.IOException; /** * 格式化的內存輸出 * @author Administrator * */ public class FormattedMemoryInput { public static void main(String[] args) throws IOException { DataInputStream in= new DataInputStream(new ByteArrayInputStream(BufferedInputFile.read("C:/Users/Administrator/Desktop/exec.txt").getBytes())); //available用來查詢還有多少可供存取的字符 while(in.available()!=0){ System.out.println(in.readByte()); } } }
package com.io; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; /** * 用GZIP進行壓縮,有空總結常用流的包裝 * @author Administrator * */ public class GZIPcompress { /**壓縮/解壓縮 常用流,可根據實例替換 * ZipOutputStream * ZipInputStream * GZipOutputStream * GZipInputStream * @param args * @throws IOException */ public static void main(String[] args) throws IOException { if(args.length==0){ System.out.println( "Usage: \nGZIPcompress file\n"+ "\tUsers GZIP compression to compress "+ "the file to test.gz" ); BufferedReader in = new BufferedReader(new FileReader("C:/Users/Administrator/Desktop/exec.txt")); //后綴名可以是.gz .gzip.zip BufferedOutputStream out= new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream("C:/Users/Administrator/Desktop/test.gz"))); System.out.println("Writing file*********************************"); int c; while((c=in.read())!=-1){ out.write(c); } out.close(); in.close(); System.out.println("reading file*********************************"); BufferedReader in2 = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream("C:/Users/Administrator/Desktop/test.gz")))); String string; while((string=in2.readLine())!=null){ System.out.println(string); } } } }
package com.io; import java.io.IOException; import java.io.StringReader; /** * 從內存中讀取,沒什么好說的 * @author Administrator * */ public class MemoryInput { public static void main(String[] args) throws IOException { StringReader in = new StringReader(BufferedInputFile.read("C:/Users/Administrator/Desktop/exec.txt")); //SringReader讀取的int類型的,所以要轉換成char打印 int c; while((c=in.read())!=-1){ System.out.println((char)c); } } }
