- 把字符串轉換爲數值
- 常用的形式如下:
- s=br.readLine(); int i=Double.parseDouble(s);
- import java.io.*;
- class javadir{
- public static void main(String args[]) throws Exception {
- BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
- PrintWriter pw=new PrintWriter(System.out);
- String s;
- int n;
- double t;
- pw.println("enter");
- s=br.readLine();
- try{
- n=Integer.parseInt(s);
- }catch(NumberFormatException exc){
- pw.println("Invalid format");
- n=0;
- }
- pw.println("Enter your number");
- for(int i=0;i<n;i++){
- s=br.readLine();
- try{
- t= Double.parseDouble(s);
- }catch(NumberFormatException exc){
- pw.println("Invalid format");
- t=0.0;
- }
- }
- }
- }
- java的標準數據流
- java通過系統類System實現標準輸入/輸出功能。System類在java.lang包中聲明一個final類:
- public final class System extends Object
- System類可以直接使用,但不能創建子類
- System.in提供了read()方法來接受數據,格式如下:
- public in read() 從輸入流中讀取數據的下一個字節
- public in read(byte[] b) 從輸入流中讀取一定量的字節並存儲在緩衝區數組b中
- 例如:
- try{
- int a=0;
- System.out.println("輸入一個字節:");
- a=System.in.read();
- System.out.println("a="+a);
- }catch(IOException e){
- e.printStackTrace();
- }
- 從輸出可以看出 輸出的是ASCII碼
- File類
- File類用來描述文件的一個類,利用其可以進行文件/文件夾的操作
- 創建文件
- File類提供了幾種構造方法用於在不同的情況下創建File對象,其構造函數如下:
- public File(String path); 指定路徑
- public File(String path,String name) ; 指定文件名和路徑
- public File(File dir,String name); name指示File 對象的文件名,dir指示File對象名
- 例子:
- File f=new File("d:/java/t.txt");
- 刪除文件
- File 類的delete()方法用於刪除當前的對象,聲明格式如下:
- public boolean delete();
- 指的注意的是,File對象既可以是文件也可以是文件夾,而當文件夾內不爲空時是不允許刪除的,所以要成功刪除一個文件夾,需要先把文件夾置空
- 獲取文件的屬性
- 例子:
- File a=new File("d:/java/t.txt");
- a.exists() //判斷a是否存在
- a.getAbsolutePath() //返回a的絕對路徑
- a.getName() //返回a的文件名
- a.length() //返回a的字符數 (a中內容的字符數)
- a.lastModified() //返回a最後一次修改的時間信息
- 目錄操作
- 1.mkdir()
- 此方法用來創建子目錄,不過調用一次只會創建一個子目錄,其聲明格式如下:
- public boolean mkdir() 例子 : File a=new File("d:/java/ch09"); a.mkdir(); 如果java這個目錄不存在 則ch09不會被創建
- 2.mkdirs()
- 此方法也是用來創建子目錄的,不過一次可以創建多級目錄,其聲明格式:
- public boolean mkdirs() 例子 :File f=new File("d://java/ch09"); f.mkdirs(); 該方法首先創建java目錄 然後創建ch09 目錄
- 3.list()
- 此方法以字符串數組的形式返回當前對象中全部文件名稱
- 例子: String ff[]=null; File f=new File("d://java/ch09"); ff=f.list();
- 輸入輸出流
- 字節流
- 如果用戶要讀取的文件比較簡單,可以採用以字節爲單位的方式輸入 輸出
- 1.FileInputStream 類
- 此類事InputStream 派生出來的輸入類,是所有面向字節輸入流的超類,也是一個抽象類,它的構造方法如下:
- 1.FileInputStream(String name) name 表示文件名 例如: FileInputStream ml=new FileInputStream("t.txt");
- 2.FileInputStream(File file) file表示File對象 例如: File f1=new File("t.txt"); FileInputStream fs=new FileInputStream(f1);
- 此類主要的方法
- read() 方法能讓程序從輸入流中讀取數據,該方法有三種形態:
- int read() 從輸入流中讀取單個字符
- int read(byte[] b) 讀取的字符放在 b 數組裏
- int read(byte[] b,int off,int len) off 指定把數據放在數組b的什麼地方,len指定該方法將讀取的最大字節數
- 當到達文件尾部時,返回-1
- 2.FileOutputStream類
- 此類用於將數據已字節爲單位寫入文件,其構造方法如下:
- FileOutputStream (String name)
- FileOutputStream(File file) 例子: FileOutputStream cl=new FileOutputStream("t.doc");
- 此類主要使用write() 方法將數據字節寫入文件中,此方法的形態有:
- public void write(int b)
- public void write(byte[] b)
- public void write(byte[] b,int off,int end) off參數指定把數據存放在字節數組b的什麼地方,len參數指定該方法將讀取的最大字節數
- 字符流
- 1.FileReader類
- FileReader類是Reader的子類,採用字符流讀取文件,其構造方法如下:
- 1.FileReader(File file); 從文件file 中讀取數據並創建一個新的FileReader 對象
- 2.FileReader(FileDescriptor fd) 構造與某個文件描述符fd相關聯的FileReader對象
- 3.FileReader(String fileName)
- 2.FileWrite類
- 此類用來將數據字字符爲單位寫入文件,它是OutputStreamWriter 的一個子類,其構造方法如下:
- 1.FileWrite(File file);
- 2.FileWrite(File file,boolean append)
- 3.FileWrite(FileDescriptor fd)
- 4.FileWrite(String fileName)
- 5.FileWrite(String fileName,boolean append)
- 其提供write() 方法
- 1.write(int b) 寫入一個字符
- 2.write(char[] b,int off,int len)
- 3.write(String s,int off,int len)
- 緩存輸入輸出流
- 如果希望以此讀取一行文本,可以使用FileReader類和BufferedReader類結合起來使用
- 1.BufferedReader
- 此類採用緩存方式從字符輸入流中讀取數據,一般不單獨使用,常和其他流一起使用
- 其構造方法如下:
- public BufferedReader(Reader in) 讀入數據源
- public BufferedReader(Reader in,int sz) 讀入指定緩衝大小的數據源
- 當FileReader對象創建後,我們可以在創建一個BufferedReader對象,就可以按行讀取文本了
- 例如:
- try{
- FileReader ml=new FileReader("t.doc");
- BufferedReader br=new BufferedReader(ml);
- String s=br.readLine();
- }catch(IOException e)
- 2.BufferedWriter
- 當需要一行行寫數據的時候,可以將BufferedWriter對象和FileWriter對象綁定在一起,然後通過BufferedWriter對象將數據寫到
- 目的地,除了write()方法外 BufferedWriter還有一個newLine() 方法可以用來發送行結束符
- 例如:
- try{
- FileWriter fw=new FileWriter("t.doc");
- BufferedWriter bw=new BufferedWriter(fw);
- String word="abc";
- bw.write(word);
- bw.newLine(); //用來發送行結束符
- bw.close();
- }catch(IOException e){}
- 數據輸入輸出流
- 數據輸入流允許應用程序以與機器無關的方式從底層輸入流中讀取java基本數據類型, 而數據輸出流允許應用程序以適當的發送將java基本數據類型寫入輸出流中
- 1.DataInputStream
- 此類可以從輸入流中讀取各種基本類型的數據,如 int boolean float
- 其構造方法如下:
- public DataInputStream(InputStream in)
- 2.DataOutputStream
- 此類可以將基本數據類型寫入輸出流
- 其構造方法如下:
- public DataOutputStream(OutputStream out)
- 壓縮輸入輸出流
- 一個zip壓縮文件通常由一個或多個entry組成,每個entry有唯一的名稱,entry存儲壓縮文件的數據
- 要創建壓縮文件,需要用的到zip包中的ZipInputStream ZipOutputStream ZipEntry 類
- 1.ZipInputStream
- 此類是讀取壓縮文件是輸入流過濾器,其構造函數如下:
- ZipInputStream(InputStream in)
- 其定義的方法如下:
- int available() 如果到達文件尾 返回0 否則返回1
- Void close() 關閉zip輸入流
- Void closeEntry() 關閉當前的zip記錄
- ZipEntry getNextEntry() 讀取下一個zip文件記錄數據
- int read(byte[] b,int off,int len) 將數據讀入字節數組
- long skip(long n) 跳過指定的字節數
- FileInputStream in=new FileInputStream("t.txt");
- ZipInputStream zin=new ZipInputStream(in);
- 2.ZipOutputStream
- 此類能夠將輸出流中的數據以Zip格式寫入文件,它支持壓縮和非壓縮兩種 主要用於創建zip文件 ,其構造方法如下:
- ZipOutputStream(OutputStream out)
- 其主要方法如下:
- void close() 關閉zip輸出流和正在過濾的流
- Void closeEntry() 關閉當前zip
- Void finish() 完成寫入zip輸入流的內容
- void putNextEntry(ZipEntry e) 定位到下一個zip記錄數據的開始處
- void setComment(String comment) 設置zip註釋
- viod setLevel(int level) 設置壓縮級別
- void setMethod(int method) 設置默認的壓縮方法
- void write(byte[] b,int off,int len) 將字節數組寫入zip
- 3.ZipEntry
- 此類用來描述zip文件 中文件條目,其構造方法如下:
- ZipEntry(String name)
- 創建壓縮文件
- 一般情況下,一個Zip文件有多個文件或文件夾,對於每個文件我們都需要創建一個ZipEntry對象並
- 依次放進zip文件中,我們需要創建一個 ZipOutputStream 對象表示這個文件
- ZipOutputStream zout=new ZipOutputStream(new FileOutputStream("t.zip"));
- 例如:
- public class ZIP{
- public static void main(String args[]){
- File file=new File("p_w_picpath"); //壓縮源
- createZip(file+".zip",file);
- }
- }
- private static void createZip(String zip,File source){
- try{
- ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zip));
- System.out.println("開始壓縮...");
- compressFile(out,"",source);
- System.out.println("壓縮完成");
- out.close();
- }catch(FileNotFoundException e){
- e.printStackTrace();
- }catch(IOException ee){
- e.printStackTrace();
- }
- }
- private static void compressFile(ZipOutputStream out,String dir,File source) throws IOException{
- System.out.println("正在壓縮"+source);
- if(source.isDirectory()){
- File []files=source.listFile();
- dir=dir+(dir.length()==0?"":"/")+source.getName();
- for(File e:files){
- compressFile(out,dir,e);
- }
- }else{
- dir=dir.length()==0?"":dir+"/"+.source.getName();
- ZipEntry entry=new ZipEntry(dir);
- out.putNextEntry(entry);
- FileInputStream fis=new FileInputStream(source);
- int size=0;
- byte[] buffer=new byte[10240];
- while((size=fis.read(buffer,0,10240))!=-1)
- out.write(buffer,0,size);
- fis.close();
- }
- }
IO
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.