JAVAテキストI/O(エッセイ)

23680 ワード

テキストI/O
ファイル名は文字列であり、Fileクラスはファイル名とそのディレクトリパスのパッケージクラスFileクラスであり、マシンに依存しない方法でマシンに依存する多くのファイルとパス名の複雑さを処理する抽象を提供するために使用されます.Fileクラスには、ファイルのプロパティを取得する方法と、ファイルとディレクトリの名前を変更、削除する方法が含まれます.ただし、ファイルの内容を読み書きする方法は含まれていません.
                java.io.File
	+File(pathname: String)
            File  ,              
	+File(parent: String, child: String)
   parent         File  ,               
	+File(parent: File, child: String)
  parent File  ,            File  
	+exists(): boolean
File            ,  true
	+canRead(): boolean
File            ,  true
	+canWrite(): boolean
File            ,  true
	+isDirectory(): boolean
File          ,  true
	+isFile(): boolean
File          ,  true
	+isAbsolute(): boolean
File            ,  true
	+getAbsolutePath(): String
  File                    
	+getCanonicalPath(): String
 getAbsolutePath()  
	+getName(): String
  File                
	+getPath(): String
  File             
	+getParent(): String
  File                  
	+lastModified(): long
          
	+length(): long
      。             ,  0
	+listFile(): File[]
      File       
	+delete(): boolean
  File          。      ,    true
	+renameTo(dest: File): boolean
  File             dest      。      ,  true
	+mkdir(): boolean                 
   File       。    ,  true
	+mkdirs():boolean            
 mkdir  。             ,        





Fileインスタンスを構築しても、マシンにファイルは作成されません.ファイルが存在するかどうかにかかわらず、任意のファイル名のFileインスタンスを作成できます.Fileインスタンスのexists()メソッドを呼び出して、現在のディレクトリに関連するファイル名が使用されるべきかどうかを判断できます.例えばnew File("Welcome.java")/現在のディレクトリの下のファイルWelcone.javaにFileオブジェクトnew File("image/us.gif")/現在のディレクトリの下のimageディレクトリの下のファイルus.gifにFileオブジェクトを作成します.java.io.File file = new java.io.File(“image/us.gif”); LastModified()メソッドは、ファイルが最後に変更された日時を返すため、UNIX時間(1970、1、1、0:0)からのミリ秒数を計算し、new java.util.Date(file.lastModified()を使用して読み取り可能な形式で表示できます.
ファイル入出力(I/O)Scannerクラスファイルからテキストデータを読み出し、PrinterWriterクラスを使用してテキストファイルにデータを書き込みます.(I/Oと略称するデータ入出力)2種類のファイル:テキストファイルとバイナリファイルPrinterWriter書き込みjava.io.PrintWriterクラスは、ファイルを作成し、テキストファイルにデータを書き込むために使用できます.まず、1つのテキストファイルにPrintWriterオブジェクトを作成します.PrintWriter output=new PrintWriter(filename);
java.io.PrintWriter
	+PrintWriter(file: File)       
            PrintWriter  
	+PrintWriter(filename: String) 
              PrintWriter  
	+print(s: String): void      
         
	+print(c: char): void         
        
	+print(cArray: char[]): void 
          
	+print(i: int): void        
   int      
	+print(l: long): void           
   long      
	+print(f: float): void          
   float      
	+print(d: double): void      
   double      
	+print(b: boolean): void       
   boolean      



PrintWriterを呼び出す構築方法では、I/O例外が放出される場合があります.Javaでは、このような例外を処理するためにコードの作成を強制されます.簡単に言えば、throws Execptionをメソッドヘッダ宣言で宣言するだけです.close()メソッドを使用してファイルを閉じる必要があります.このメソッドを呼び出さないと、データはファイルに正しく保存されません.try-with-resourcesを使用してリソースtryを自動的に閉じることができます(リソースの宣言と作成){ファイルを処理するためにリソースを使用します;}
try(
     //                 ,                    
     java.io.PrintWriter output = new java.io.PrintWriter(file);
) {
     output.print("John T amith");
}close()           。
     AutoCloseable    , PrintWriter,     close()

Scannerはデータを読み取ってファイルから読み取って、ファイルのためにScannerを作成する必要があります:Scanner input=new Scanner(new File);
java.util.Scanner
	+Scanner(source: File)  
    Scanner,            
	+Scanner(source: String) 
    Scanner,             
	+close()                 
  Scanner
	+hasNext(): boolean      
  Scanner          ,   true
	+next(): String           
 Scanner               
	+nextLine(): String       
 Scanner     ,     
	+nextByte(): byte       
 Scanner          byte   
	+nextShort(): short      
 Scanner          short   
	+nextInt(): int         
 Scanner          int   
	+nextLong(): long         
 Scanner          long   
	+nextFloat(): float     
 Scanner          float   
	+nextDouble(): double    
 Scanner          double   
	+useDelimiter(pattern: String): Scanner 
  Scanner    ,    Scanner







Scannerタグベースの読取方法(nextInt,nextbyteなど)ではタグの後ろの区切り文字を読み取ることができない点に注意してください.タグベースの読取方法の後にnextLine()を呼び出し、この区切り文字からこの行の行区切り文字までの文字を読み取る方法です.int value=input.nextInt();String line=input.nextLine();テキストファイルの内容が34,567の場合、value値は34であり、lineに含まれる文字は'','5','6','7'である.キーボードから34を入力し、Enterキーを押して567を入力すると、value値は34であり、lineは空の文字列である.
Webからデータを読み込むWeb上のファイルのURLからWeb上のファイルのデータにアクセスできます.java.net.URLクラスの構築方法を使用してURLオブジェクトを作成しますAPIドキュメント:URL(String spec)Creates a URL object from the String representation.//文字列表示形式からURLオブジェクトConstructor Detail:public URL(String spec)を作成します throws MalformedURLException{ try{ URL url = new URL(“http://www.google.com/index.html”); } catch (MalformedURLException ex) { ex.printStackTrace(); } }URL文字に構文エラーがある場合は、httpのようなMalformedURLExceptionが放出されます.後に二重スラッシュが少なくなると、MalformedURLExceptionの実行エラーが発生します.URLクラスに有効なURLを認識させるには、http://_の接頭辞が必要です.ReadFileFromURL.javaを参照してください.
import java.net.MalformedURLException;
import java.net.URL;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
public class ReadFileFromURL {
    public static void main(String[] args) {
        System.out.println("Enter a URL:");
        //          URL   
        String URLString = new Scanner(System.in).next();
        try {
            URL url = new URL(URLString);
            int count = 0;
            //  URL     openStream()          ,           Scanner  
            Scanner input = new Scanner(url.openStream());

            while (input.hasNext()) {
                String line = input.nextLine();
                count += line.length();
                
            }
            
            System.out.println("The file size is " + count + " characters");
        }
        catch (MalformedURLException ex) {
            System.out.println("Invalid URL");
        }
        catch (IOException ex) {
            System.out.println("I/O Errors: no such file");
        }
    }
}



URLが正しく表示する場合、構造方法はjava.net.MalformedURLExceptionを放出し、与えられたURLが正しいが存在しない場合、IOExceptionを放出する.