JAVA中的IO

FILE類常量

import java.io.*;  
class hello{  
    public static void main(String[] args) {  
        System.out.println(File.separator);//輸出"/"
        System.out.println(File.separatorChar + "");//輸出"/"
        System.out.println(File.pathSeparator);//輸出 ":"
        System.out.println(File.pathSeparatorChar + "");//輸出 ":"
   }
}
在windows下使用\進行分割,可是在linux下就不是\了。因此,要想使得咱們的代碼跨平臺,更加健壯,因此,採用這兩個常量吧

建立文件

import java.io.*;  
class hello{  
    public static void main(String[] args) {  
        File f=new File("D:\\hello.txt");  
        try{  
            f.createNewFile();  
        }catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}

建立一個文件夾

import java.io.*;  
class hello{  
    public static void main(String[] args) {  
        String fileName="D:"+File.separator+"hello";  
        File f=new File(fileName);  
        f.mkdir();  
    }  
}

刪除一個文件

import java.io.*;  
class hello{  
    public static void main(String[] args) {  
        String fileName="D:"+File.separator+"hello.txt";  
        File f=new File(fileName);  
        if(f.exists()){  
            f.delete();  
        }else{  
            System.out.println("文件不存在");  
        } 
    }  
}

列出指定目錄的所有文件名(包括隱藏文件)

/**  
 * 使用list列出指定目錄的所有文件名  
 * */ 
import java.io.*;  
class hello{  
    public static void main(String[] args) {  
        String fileName="D:"+File.separator;  
        File f=new File(fileName);  
        String[] str=f.list();  
        for (int i = 0; i < str.length; i++) {  
            System.out.println(str[i]);  
        }  
    }  
}

列出指定目錄的所有文件(包括隱藏文件)

/**  
 * 使用listFiles列出指定目錄的所有文件  
 * listFiles輸出的是完整路徑  
 * */ 
import java.io.*;  
class hello{  
    public static void main(String[] args) {  
        String fileName="D:"+File.separator;  
        File f=new File(fileName);  
        File[] str=f.listFiles();  
        for (int i = 0; i < str.length; i++) {  
            System.out.println(str[i]);  
        }  
    }  
}

判斷一個指定的路徑是否爲目錄

/**  
 * 使用isDirectory判斷一個指定的路徑是否爲目錄  
 * */ 
import java.io.*;  
class hello{  
    public static void main(String[] args) {  
        String fileName="D:"+File.separator;  
        File f=new File(fileName);  
        if(f.isDirectory()){  
            System.out.println("YES");  
        }else{  
            System.out.println("NO");  
        }  
    }  
}

搜索指定目錄的所有內容

/**  
 * 列出指定目錄的所有內容  
 * */ 
import java.io.*;  
class hello{  
    public static void main(String[] args) {  
        String fileName="D:"+File.separator;  
        File f=new File(fileName);  
        print(f);  
    }  
    public static void print(File f){  
        if(f!=null){  
            if(f.isDirectory()){  
                File[] fileArray=f.listFiles();  
                if(fileArray!=null){  
                    for (int i = 0; i < fileArray.length; i++) {  
                        //遞歸調用  
                        print(fileArray[i]);  
                    }  
                }  
            }  
            else{  
                System.out.println(f);  
            }  
        }  
    }  
}

使用RandomAccessFile寫入文件

/**  
 * 使用RandomAccessFile寫入文件  
 * */ 
import java.io.*;  
class hello{  
    public static void main(String[] args) throws IOException {  
        String fileName="D:"+File.separator+"hello.txt";  
        File f=new File(fileName);  
        RandomAccessFile demo=new RandomAccessFile(f,"rw");  
        demo.writeBytes("asdsad");  
        demo.writeInt(12);  
        demo.writeBoolean(true);  
        demo.writeChar('A');  
        demo.writeFloat(1.21f);  
        demo.writeDouble(12.123);  
        demo.close();     
    }  
}

中文亂碼,不能對文件進行覆寫不能追加

向文件中寫入字符串

/**  
 * 字節流  
 * 向文件中寫入字符串  
 * */ 
import java.io.*;  
class hello{  
    public static void main(String[] args) throws IOException {  
        String fileName="D:"+File.separator+"hello.txt";  
        File f=new File(fileName);  
        OutputStream out =new FileOutputStream(f);  
        String str="你好";  
        byte[] b=str.getBytes();  
        out.write(b);  
        out.close();  
    }  
}

中文不亂碼,文件不存在會建立,會覆寫

一個字節一個字節的寫

/**  
 * 字節流  
 * 向文件中一個字節一個字節的寫入字符串  
 * */ 
import java.io.*;  
class hello{  
    public static void main(String[] args) throws IOException {  
        String fileName="D:"+File.separator+"hello.txt";  
        File f=new File(fileName);  
        OutputStream out =new FileOutputStream(f);  
        String str="你好";  
        byte[] b=str.getBytes();  
        for (int i = 0; i < b.length; i++) {  
            out.write(b[i]);  
        }  
        out.close();  
    }  
}

向文件中追加新內容

/**  
 * 字節流  
 * 向文件中追加新內容:  
 * */ 
import java.io.*;  
class hello{  
    public static void main(String[] args) throws IOException {  
        String fileName="D:"+File.separator+"hello.txt";  
        File f=new File(fileName);  
        OutputStream out =new FileOutputStream(f,true);//追加模式  
        String str="Rollen";  
        //String str="\r\nRollen";  能夠換行  
        byte[] b=str.getBytes();  
        for (int i = 0; i < b.length; i++) {  
            out.write(b[i]);  
        }  
        out.close();  
    }  
}

讀取文件內容

/**  
 * 字節流  
 * 讀文件內容  
 * */ 
import java.io.*;  
class hello{  
    public static void main(String[] args) throws IOException {  
        String fileName="D:"+File.separator+"hello.txt";  
        File f=new File(fileName);  
        InputStream in=new FileInputStream(f);  
        byte[] b=new byte[1024];  
        in.read(b);  
        in.close();  
        System.out.println(new String(b));  
    }  
}

建立合適長度的空間大小

/**  
 * 字節流  
 * 讀文件內容,節省空間  
 * */ 
import java.io.*;  
class hello{  
    public static void main(String[] args) throws IOException {  
        String fileName="D:"+File.separator+"hello.txt";  
        File f=new File(fileName);  
        InputStream in=new FileInputStream(f);  
        byte[] b=new byte[(int)f.length()];  
        in.read(b);  
        System.out.println("文件長度爲:"+f.length());  
        in.close();  
        System.out.println(new String(b));  
    }  
}

一個一個讀

/**  
 * 字節流  
 * 讀文件內容,節省空間  
 * */ 
import java.io.*;  
class hello{  
    public static void main(String[] args) throws IOException {  
        String fileName="D:"+File.separator+"hello.txt";  
        File f=new File(fileName);  
        InputStream in=new FileInputStream(f);  
        byte[] b=new byte[(int)f.length()];  
        for (int i = 0; i < b.length; i++) {  
            b[i]=(byte)in.read();  
        }  
        in.close();  
        System.out.println(new String(b));  
    }  
}

文件不知道長度讀取

/**  
 * 字節流  
 *讀文件  
 * */ 
import java.io.*;  
class hello{  
    public static void main(String[] args) throws IOException {  
        String fileName="D:"+File.separator+"hello.txt";  
        File f=new File(fileName);  
        InputStream in=new FileInputStream(f);  
        byte[] b=new byte[1024];  
        int count =0;  
        int temp=0;  
        while((temp=in.read())!=(-1)){//返回-1則表示到了文件尾部
            b[count++]=(byte)temp;  
        }  
        in.close();  
        System.out.println(new String(b));  
    }  
}

字符流寫入數據

/**  
 * 字符流  
 * 寫入數據  
 * */ 
import java.io.*;  
class hello{  
    public static void main(String[] args) throws IOException {  
        String fileName="D:"+File.separator+"hello.txt";  
        File f=new File(fileName);  
        Writer out =new FileWriter(f);//追加時和上面同樣加一爲true的參數
        String str="hello";  
        out.write(str);  
        out.close();  
    }  
}

字符流從文件中讀出內容

/**  
 * 字符流  
 * 從文件中讀出內容  
 * */ 
import java.io.*;  
class hello{  
    public static void main(String[] args) throws IOException {  
        String fileName="D:"+File.separator+"hello.txt";  
        File f=new File(fileName);  
        char[] ch=new char[100];  
        Reader read=new FileReader(f);  
        int count=read.read(ch);  
        read.close();  
        System.out.println("讀入的長度爲:"+count);  
        System.out.println("內容爲"+new String(ch,0,count));  
    }  
}

循環讀取的方式

/**  
 * 字符流  
 * 從文件中讀出內容  
 * */ 
import java.io.*;  
class hello{  
    public static void main(String[] args) throws IOException {  
        String fileName="D:"+File.separator+"hello.txt";  
        File f=new File(fileName);  
        char[] ch=new char[100];  
        Reader read=new FileReader(f);  
        int temp=0;  
        int count=0;  
        while((temp=read.read())!=(-1)){  
            ch[count++]=(char)temp;  
        }  
        read.close();  
        System.out.println("內容爲"+new String(ch,0,count));  
    }  
}

OutputStreramWriter將輸出的字符流轉化爲字節流
InputStreamReader將輸入的字節流轉換爲字符流

將字節輸出流轉化爲字符輸出流

/**  
 * 將字節輸出流轉化爲字符輸出流  
 * */ 
import java.io.*;  
class hello{  
    public static void main(String[] args) throws IOException {  
        String fileName= "d:"+File.separator+"hello.txt";  
        File file=new File(fileName);  
        Writer out=new OutputStreamWriter(new FileOutputStream(file));  
        out.write("hello");  
        out.close();  
    }  
}

將字節輸入流變爲字符輸入流

/**  
 * 將字節輸入流變爲字符輸入流  
 * */ 
import java.io.*;  
class hello{  
    public static void main(String[] args) throws IOException {  
        String fileName= "d:"+File.separator+"hello.txt";  
        File file=new File(fileName);  
        Reader read=new InputStreamReader(new FileInputStream(file));  
        char[] b=new char[100];  
        int len=read.read(b);  
        System.out.println(new String(b,0,len));  
        read.close();  
    }  
}

ByteArrayInputStream 主要將內容寫入內容
ByteArrayOutputStream 主要將內容從內存輸出

使用內存操做流將一個大寫字母轉化爲小寫字母

/**  
 * 使用內存操做流將一個大寫字母轉化爲小寫字母  
 * */ 
import java.io.*;  
class hello{  
    public static void main(String[] args) throws IOException {  
        String str="ROLLENHOLT";  
        ByteArrayInputStream input=new ByteArrayInputStream(str.getBytes());  
        ByteArrayOutputStream output=new ByteArrayOutputStream();  
        int temp=0;  
        while((temp=input.read())!=-1){  
            char ch=(char)temp;  
            output.write(Character.toLowerCase(ch));  
        }  
        String outStr=output.toString();  
        input.close();  
        output.close();  
        System.out.println(outStr);  
    }  
}
內容操做流通常使用來生成一些臨時信息採用的,這樣能夠避免刪除的麻煩。

版權聲明:本文爲博主原創文章,未經博主容許不得轉載。java

相關文章
相關標籤/搜索