1. 程式人生 > >Java中文字I/O的簡單操作

Java中文字I/O的簡單操作

一、File類

File類意圖提供一種抽象,這種抽象指不依賴機器的方式來處理很多依賴於機器的檔案和路徑名的複雜性。

該類中包含許多檔案屬性的方法,以及重新命名和刪除檔案和目錄的方法。
但是不包含讀寫檔案內容的方法。

File類的構造方法:
1、通過給定的父抽象路徑名和子路徑名字串建立一個新的File例項。
File(File parent, String child);

2、通過將給定路徑名字串轉換成抽象路徑名來建立一個新 File 例項。
File(String pathname)

3、根據 parent 路徑名字串和 child 路徑名字串建立一個新 File 例項。
File(String parent, String child)

4、通過將給定的 file: URI 轉換成一個抽象路徑名來建立一個新的 File 例項。
File(URI uri)

What is URI ?
統一資源識別符號(Uniform Resource Identifier,或URI)是一個用於標識某一網際網路資源名稱的字串。 該種標識允許使用者對任何(包括本地和網際網路)的資源通過特定的協議進行互動操作。URI由包括確定語法和相關協議的方案所定義。

Web上可用的每種資源 -HTML文件、影象、視訊片段、程式等 - 由一個通用資源識別符號(Uniform Resource Identifier, 簡稱”URI”)進行定位。
(參考百度百科)

建立File物件成功後,可以使用以下列表中的方法操作檔案。
都用public修飾

型別 函式名 作用
String getName() 返回由此抽象路徑名錶示的檔案或目錄的名稱。
String getParent() 返回此抽象路徑名的父路徑名的路徑名字串,如果此路徑名沒有指定父目錄,則返回 null
File getParentFile() 返回此抽象路徑名的父路徑名的抽象路徑名,如果此路徑名沒有指定父目錄,則返回 null
String getPath() 將此抽象路徑名轉換為一個路徑名字串
boolean isAbsolute() 測試此抽象路徑名是否為絕對路徑名
String getAbsolutePath() 返回抽象路徑名的絕對路徑名字串
boolean canRead() 測試應用程式是否可以讀取此抽象路徑名錶示的檔案
boolean canWrite() 測試應用程式是否可以修改此抽象路徑名錶示的檔案
boolean exists() 測試此抽象路徑名錶示的檔案或目錄是否存在
boolean isDirectory() 測試此抽象路徑名錶示的檔案是否是一個目錄
boolean isFile() 測試此抽象路徑名錶示的檔案是否是一個標準檔案
long lastModified() 返回此抽象路徑名錶示的檔案最後一次被修改的時間
long length() 返回由此抽象路徑名錶示的檔案的長度。
boolean createNewFile() throws IOException 當且僅當不存在具有此抽象路徑名指定的名稱的檔案時,原子地建立由此抽象路徑名
boolean delete() 刪除此抽象路徑名錶示的檔案或目錄
void deleteOnExit() 在虛擬機器終止時,請求刪除此抽象路徑名錶示的檔案或目錄
String[] list() 返回由此抽象路徑名所表示的目錄中的檔案和目錄的名稱所組成字串陣列
String[] list(FilenameFilter filter) 返回由包含在目錄中的檔案和目錄的名稱所組成的字串陣列,這一目錄是通過滿足指定過濾器的抽象路徑名來表示的
File[] listFiles() 返回一個抽象路徑名陣列,這些路徑名錶示此抽象路徑名所表示目錄中的檔案
File[] listFiles(FileFilter filter) 返回表示此抽象路徑名所表示目錄中的檔案和目錄的抽象路徑名陣列,這些路徑名滿足特定過濾器
boolean mkdir() 建立此抽象路徑名指定的目錄
boolean mkdirs() 建立此抽象路徑名指定的目錄,包括建立必需但不存在的父目錄
boolean renameTo(File dest) 重新命名此抽象路徑名錶示的檔案
boolean setLastModified(long time) 設定由此抽象路徑名所指定的檔案或目錄的最後一次修改時間
boolean setReadOnly() 標記此抽象路徑名指定的檔案或目錄,以便只可對其進行讀操作
int compareTo(File pathname) 按字母順序比較兩個抽象路徑名
int compareTo(Object o) 按字母順序比較抽象路徑名與給定物件
String toString() 返回此抽象路徑名的路徑名字串
boolean equals(Object obj) 測試此抽象路徑名與給定物件是否相等

其餘兩個static函式
public static File createTempFile(String prefix, String suffix, directory) throws IOException
在指定目錄中建立一個新的空檔案,使用給定的字首和字尾字串生成其名稱

public static File createTempFile(String prefix, String suffix) throws IOException
在預設臨時檔案目錄中建立一個空檔案,使用給定字首和字尾生成其名稱

注意:
在Windows中目錄的分隔符是反斜槓()。但是在java中,反斜槓應該寫成\形式。

構建一個File例項並不會在機器上建立一個檔案。不管檔案是否存在,都可以建立任意檔名的的File例項。可以呼叫File中的exists()方法來判斷檔案是否存在。

File類測試demo:

public class Main {
    public static void main(String[] args) {
        java.io.File file = new java.io.File("test.txt");
        System.out.println("Does it exist? " + file.exists());
        System.out.println("The file has " + file.length() + " bytes");
        System.out.println("Can it be read? " + file.canRead());
        System.out.println("Can it be written? " + file.canWrite());
        System.out.println("Is a directory ? " + file.isDirectory());
        System.out.println("Is a file ? " + file.isFile());
        System.out.println("Is a absolute ? " + file.isAbsolute());
        System.out.println("Is a hidden ? " + file.isHidden());
        System.out.println("Absolute path: " + file.getAbsolutePath());
        System.out.println("Last modified on " +
                                new java.util.Date(file.lastModified()));
    }
}

執行結果:
執行結果

二、檔案輸入和輸出

1、使用PrintWriter寫資料

java.io.PrintWriter類可用來建立一個文字檔案並向該檔案寫入資料。

PrintWriter的常用方法
PrintWriter

2、可以使用try-with-resources自動關閉資源

程式設計師經常會忘記關閉檔案。JDK 7提供下面的新的try-with-resources語法來自動檔案。

try(宣告和建立資源){
    使用資源來處理檔案;
}

還記不記得c語言中,檔案指標忘記關閉經常會導致很多bug吧。
在Java中使用try-with-resources不僅可以避免錯誤,而且還可以簡化程式碼。
關鍵字try後宣告和建立的資源必須是AutoCloseable的子型別,這樣try塊結束時,資源自動呼叫close()方法來關閉資源。

3、使用Scanner讀資料

先來回憶一下,如何從鍵盤讀取資料。

Scanner input = new Scanner(System.in);

然後可以用input.next(),input.nextInt()等來從鍵盤接受各種資料。

鍵盤實質上是一個裝置檔案,那麼從其它檔案讀取資料也是一樣的。
如:

Scanner input = new Scanner(new File(filename));

Scanner的常用方法
Scanner

關於Scanner的工作模式

Scanner的標記讀取法首先跳過任意分隔符(預設為空格),然後讀取一個以分隔符結束的標記。然後,對應與各種型別,將標記自動轉換為相應型別的值。對於next()無須做轉換的。如果比阿基和期望的型別不匹配,就會丟擲一個執行異常java.util.InputMismatchException。

方法next()和nextLine()都會讀取一個字串。next()方法讀取一個由分隔符分隔的字串,但是nextLine()讀取一個以換行符結束的行。
換行符:Windows上為\r\n,Unix/Linux上是\n。

例子:

/*PrintWriter and Scanner test*/
import java.io.IOException;
import java.io.PrintWriter;
import java.io.File;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws IOException{
        File file = new File("source.txt");
        if(file.exists()){
            System.out.println("File already exists");
            System.exit(1);
        }

        try(PrintWriter output = new PrintWriter(file)){
            output.print("li T zhao ");
            output.println("90");
            output.print("zhou F wei ");
            output.println("60");
        }

        try(Scanner input = new Scanner(file)){
            for(int i=0;i<2;i++){
                String firstname =  input.next();
                String mi = input.next();
                String lastname = input.next();
                int score = input.nextInt();
                System.out.println(firstname + " " + mi
                + " " + lastname + " " + score);
            }
        }
    }
}

執行結果:
第一次執行:
first
第二次執行:
second

相關推薦

Java文字I/O簡單操作

一、File類 File類意圖提供一種抽象,這種抽象指不依賴機器的方式來處理很多依賴於機器的檔案和路徑名的複雜性。 該類中包含許多檔案屬性的方法,以及重新命名和刪除檔案和目錄的方法。 但是不包含讀寫檔案內容的方法。 File類的構造方法: 1、通過給定

JavaI/O操作

首先先了解一下檔案型別,我們都知道資料是以二進位制形式儲存的,但是為了資料處理方便,高階語言中引入了資料型別的概念。檔案也引入了檔案型別的概念。 檔案型別通常是以副檔名體現出來的,每種檔案型別都有一定的格式,代表檔案含義和二進位制之間的對映關係。一個World檔案,其中有文

java對於redis的簡單操作

java info img png .com 圖片 jar包 9.png com 添加redis的jar包 java中對於redis的簡單操作

javai/o體系結構及流分類

Java中IO流的體系結構如圖: 在整個Java.io包中最重要的就是5個類和一個介面。5個類指的是File、OutputStream、InputStream、Writer、Reader;一個介面指的是Serializable.掌握了這些IO的核心操作那麼

淺談JAVAI/O流(一)

今天學習了I/O流,所以和大家聊一下 關於I/O流的一些寫法與個人心得! 首先需要了解的就是什麼是流。流呢就是一連串的字元,它是根據先進先出的方式來進行傳送資訊的一種通道!那麼流可以具體用來做什麼呢?甚至說什麼樣的場景下我們才會用到流呢?I/O流的一個主

Java I/O 抽象

描述 pad 經典 output tde 一個 write 標準 append Table of Contents 前言 字節流 常用實現 字符流 常用實現 緩沖區 各種字節流 結語 前言 由於在接觸 Java 之前使用的語言是 Python,所以在轉到 Ja

JavaI/O輸入輸出流概述

       流是一組有序的資料序列,根據操作型別,可以分為輸入流和輸出流兩種,Java語言中定義的負責各種輸入輸出的類都被放在java.io包中。其中所有的輸入流類都是抽象類InputStream(位元組輸入流)或抽象類Reader(字元輸入流)的

java——第十二章 異常處理和文字I/O

1.異常處理: 使用try_throw_catch塊模組 優點:將檢測錯誤(由被呼叫的方法完成)從處理錯誤(由呼叫方法完成)中分離出來。 例子: 1 package test; 2 import java.util.Scanner; 3 public class Demo { 4 5

Java I/O簡單總結

Java IO最重要的5個類File、OutputStream、InputStream、Writer、Reader以及一個介面Serializable File類:對檔案進行操作 位元組流:OutputStream、InputStream 字元流:Writer、Reader Se

I/O 簡單文字檔案讀寫改 物件 ArrayList儲存檔案的記錄

建立一個類TextFile ,繼承ArrayList 類      哪麼TextFile 擁有ArrayList public類成員資料和方法。目的:1、用ArrayList物件儲存從文字檔案中讀出的記錄         2、可以用ArrayList類裡面的所有的方法對檔案中

java基礎之I/O流(一)------------字元流的檔案讀寫操作

一.流的概念: java的輸入輸出稱為流,流是一組有順序的集合。而流的本質則是資料傳輸 二.流的分類:                  1.根據處理的功能分為位元組流(InputStream,OutPutStrean)和字元流(Writer,Reader)  

C#--I/O操作文字檔案之StreamWrite類和StreamReader類

使用I/O流操作文字檔案時主要用到StreamWrite類和StreamRead類。 1.StreamWrite類 (1)StreamWrite類專門用來處理文字檔案的類,可以方便地想文字檔案中寫入字串,同時負責重要的轉換和處理向FileStream物件寫入工作。 (

Java I/O操作(二)緩衝流

IO的緩衝區的存在就是為了提高效率,把要操作的資料放進緩衝區,然後一次性把緩衝區的內容寫到目的地,而不是寫一次就往目的地寫一次.在這裡要注意的是當我們關閉了緩衝區物件實際也關閉了與緩衝區關聯的流物件.BufferWriter類FileWriter fw =null;try{f

linux檔案I-O操作(系統I-O

我們都知道linux下所有裝置都是以檔案存在的,所以當我們需要用到這些裝置的時候,首先就需要開啟它們,下面我們來詳細瞭解一下檔案I/O操作。 用到的檔案I/O有以下幾個操作:開啟檔案、讀檔案、寫檔案、關閉檔案等,對應用到的函式有:open、read、write、close、

Javai=i++

static 過程 讓我 總結 完成 開始 java代碼 進棧 優先級 1 public class Demo_01 { 2 public static void main(String[] args) { 3 int a = 10; 4

Java復習——I/O與序列化

相對 字符串 方便 提升 -1 取字符 區別 off script File類 java.io.File只用於表示文件(目錄)的信息(名稱、大小等),不能用於文件內容的訪問,我們可以通過通過給其構造函數傳一個路徑來構建以文件,傳入的路徑名有一個小問題,就是Windows和

Java 的字符串 操作

常量 ood org substring str1 lean 遍歷 builder this package day01; import org.junit.Test; public class TestString { /** * 測試常量池

JAVA字符串常見操作

ace equals 輸出 reverse dex 運算符 常見 substring 運算 String str1="hello,world";String str2="Hello,World";1.字符串的比較:例,System.out.println(str1.comp

Java使用UDP實現簡單的聊天功能

udp http @override 簡單的 ima string [] 發送消息 sock 通過DatagramSocket類來實現。此類表示用來發送和接收數據報包的套接字。 發送端代碼如下: 2 3 import java.io.IOException; 4

Java筆記:I/O

out eno display cat java筆記 txt fileinput put one 一、流 Java通過流實現I/O,流是一種可以產生或使用信息的抽象。 Java定義了兩種類型的流: 字節流:處理字節的輸入和輸出,例如讀寫二進制數據。 字符流:處理字符的輸入