典型文件操作 (java.io.*)

 

輸入輸出流

在Java中,我們把能夠讀取一個字節序列的對象稱作一個輸入流;而我們把夠寫一個字節序列稱作一個輸出流。它們分別由抽象類

InputStream和OutputStream類表示。因爲面向字節的流不方便用來處理存儲爲Unicode(每個字符使用兩個字節)的信息。所以Java

引入了用來處理Unicode字符的類層次,這些類派生自抽象類Reader和Writer,它們用於讀寫雙字節的Unicode字符,而不是單字節字符。

Java.io包簡介

JDK標準幫助文檔是這樣解釋Java.io包的,通過數據流、序列和文件系統爲系統提供輸入輸出。

InputStream類和OutputStream類

InputStream類是所有輸入數據流的父類,它是一個抽象類,定義了所有輸入數據流都具有的共通特性。

java.io.InputStream的方法如下:

public abstract read()throws IOException

讀取一個字節並返回該字節,如果到輸入源的末則返回-1。一個具體的輸入流類需要重載此方法,以提供 有用的功能。例如:在FileInputStream類中,該方法從一個文件讀取一個字節。

public int read(byte[] b)throws IOException

把數據讀入到一個字節數據中,並返回實際讀取的字節數目。如果遇到流末 則返回-1,該方法最多讀取b.length個字節。

public abstract int read(byte[] b,int off,int len)throws IOException

把數據讀入到一個字節數組中並返回實際讀取的字節數目。如果遇到流的末尾則的返回-1。 其中參數off表示第一個字節在b中的位置,len表示讀取的最大字節數。

public long skip(long n)throws IOException

略過N個字節不讀取,會返回實際略過的字節數目。因爲數據流中剩下的數據可能不到N 個字節那麼多,所以此時返回值會小於N。

public int available()throws IOException

read方法(包括後面要講的OutputStream類的Write方法)都能夠陰塞一個線程,直到字節被 實際讀取或寫入。這意味着如果一個流不能立即被讀或被寫

文件操作
2007年03月23日 星期五 
10:46
*
* Created on 2005-3-10
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package mytestfiles; 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

/**
@author zhangqinglin
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/

public class Files 
{
     
public static void main(String[] args) throws IOException
     
{
         Files f 
= new Files();
//       System.out.println(f.readFile("f:/LinkFile.java"));
//       f.readAllFile("f:/","LinkFile.java");
//       f.readLineFile("f:/","LinkFile.java");
//       System.out.println(f.fileIsNull("f:/","122.txt"));
//       f.readFolderByFile("F:/PDF"); 
//       System.out.println(f.createAndDeleteFolder("ss","f:/"));
//       System.out.println(f.createAndDeleteFile("f:/ss/","TestFile.dat"));
         String[] ss = new String[50];
         
for(int i=0;i<ss.length;i++)
         
{
             ss[i] 
= "信息技術和互聯網(計算機軟硬件,通訊) "+i;
         }

         f.writeFile(
"f:/ss/","TestFile.txt",ss);
     }

     
/**
     * 文件的寫入
     * 
@param filePath(文件路徑)
     * 
@param fileName(文件名)
     * 
@param args[]
     * 
@throws IOException
     
*/

     
public void writeFile(String filePath,String fileName,String[] args) throws IOException
     
{
         FileWriter fw 
= new FileWriter(filePath+fileName);
         PrintWriter out
=new PrintWriter(fw); 
         
for(int i=0;i<args.length;i++)
         
{
             out.write(args[i]);
             out.println();
             out.flush();
         }

         fw.close();
         out.close();
     }

   
/**
     * 文件的寫入
     * 
@param filePath(文件路徑)
     * 
@param fileName(文件名)
     * 
@param args
     * 
@throws IOException
     
*/

     
public void writeFile(String filePath,String fileName,String args) throws IOException
     
{
         FileWriter fw 
= new FileWriter(filePath+fileName);
         fw.write(args);
         fw.close();
     }

    
/**
     * 創建與刪除文件
     * 
@param filePath
     * 
@param fileName
     * 
@return 創建成功返回true
     * 
@throws IOException
     
*/

     
public boolean createAndDeleteFile(String filePath,String fileName) throws IOException
     
{
         
boolean result = false;
         File file 
= new File(filePath,fileName);
         
if(file.exists())
         
{
            file.delete();
            result 
= true;
            System.out.println(
"文件已經刪除!"); 
         }

         
else
         
{
             file.createNewFile();
             result 
= true;
             System.out.println(
"文件已經創建!");
         }

         
return result;
     }

     
/**
     * 創建和刪除目錄
     * 
@param folderName
     * 
@param filePath
     * 
@return 刪除成功返回true
     
*/

     
public boolean createAndDeleteFolder(String folderName,String filePath)
     
{
         
boolean result = false;
         
try
         

            File file 
= new File(filePath+folderName);
            
if(file.exists())
            
{
               file.delete();
                System.out.println(
"目錄已經存在,已刪除!");
                result 
= true;
            }

            
else
            
{
                 file.mkdir();
                 System.out.println(
"目錄不存在,已經建立!");
                 result 
= true;
             }

         }

         
catch(Exception ex)
         
{
             result 
= false;
             System.out.println(
"CreateAndDeleteFolder is error:"+ex);
         }

         
return result;
     }

   
/**
    * 輸出目錄中的所有文件及目錄名字
    * 
@param filePath
    
*/

    
public void readFolderByFile(String filePath)
    
{
        File file 
= new File(filePath);
        File[] tempFile 
= file.listFiles();
        
for(int i = 0;i<tempFile.length;i++)
        
{
          
if(tempFile[i].isFile())
          
{
              System.out.println(
"File : "+tempFile[i].getName());
           }

           
if(tempFile[i].isDirectory())
           
{
               System.out.println(
"Directory : "+tempFile[i].getName());
           }

         }
 
    }

   
/**
     * 檢查文件中是否爲一個空
     * 
@param filePath
     * 
@param fileName
     * 
@return 爲空返回true
     * 
@throws IOException
     
*/

     
public boolean fileIsNull(String filePath,String fileName) throws IOException
     
{
         
boolean result = false;
         FileReader fr 
= new FileReader(filePath+fileName);
         
if(fr.read() == -1)
         
{
             result 
= true;
             System.out.println(fileName
+" 文件中沒有數據!"); 
         }

         
else
         
{
             System.out.println(fileName
+" 文件中有數據!");
         }

        fr.close();
        
return result;
    }

    
/**
     * 讀取文件中的所有內容
     * 
@param filePath
     * 
@param fileName
     * 
@throws IOException
     
*/

     
public void readAllFile(String filePath,String fileName) throws IOException
     
{
         FileReader fr 
= new FileReader(filePath+fileName);
         
int count = fr.read();
         
while(count != -1)
         
{
             System.out.print((
char)count);
             count 
= fr.read();
             
if(count == 13)
             
{
                 fr.skip(
1);
             }

         }
 
         fr.close();
     }

    
/**
     * 一行一行的讀取文件中的數據
     * 
@param filePath
     * 
@param fileName
     * 
@throws IOException
     
*/

     
public void readLineFile(String filePath,String fileName) throws IOException
     
{
        FileReader fr 
= new FileReader(filePath+fileName);
        BufferedReader br 
= new BufferedReader(fr);
        String line 
= br.readLine();
        
while(line != null)
        
{
            System.out.println(line);
            line 
= br.readLine();
        }

        br.close();
        fr.close();
     }

}

 
發佈了15 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章