二、javase基礎知識總結(從檔案 I/O開始)

lcc發表於2021-09-09

33、Java I/O輸入輸出流

一、主要學習的知識點
    1、解決編碼問題
    2、File類的使用
    3、RandomAcessFile的使用
    4、位元組流的使用
    5、字元流的使用
    6、物件的序列化和反序列化

34、編碼問題

1、把字串用專案的預設編碼輸出   s.getByte();
        String s ="慕課網IM";
        byte[] byte1 = s.getBytes();//把字串轉換成位元組序列,用的是專案的預設編碼GBK
        for(byte b: byte1){
            //把位元組陣列轉化成int以16進位制輸出
            System.out.print(Integer.toHexString(b & 0xff )+",");
           //& 0xff是為了把前面的24個0去掉只留下後八位
        }
2、把字串以指定的編碼方式輸出  s.geBytes("GBK");
    String s ="慕課網IM";
    System.out.println("GBK編碼後的16進位制");
        byte[] byte2 = s.getBytes("gbk");
        //gbk編碼:中文佔用2個位元組,英文佔用1個位元組
        for(byte b: byte2){
            System.out.print(Integer.toHexString(b & 0xff )+",");
        }
3、位元組編碼總結

    gbk編碼: 中文佔用兩個位元組,英文佔用一個位元組
    utf-8編碼:中文佔用三個位元組,英文佔用一個位元組
    java是雙位元組編碼,是utf-16be編碼
    utf-16be編碼:中文佔用兩個位元組,英文佔用兩個位元組

另外:文字檔案就是位元組序列,可以是任意編碼的位元組序列

35、當你希望用某種編碼方式來輸出而又不出現亂碼的方式

/**
         *當你的位元組序列是某種編碼時,這個時候想把位元組序列變成字串,也需要用這種編碼方式,否則會出現亂碼
         */
        System.out.println();
        byte[] byte5 = s.getBytes("UTF-8");
        String str1 = new String(byte5,"utf-8");
        System.out.println("以utf-8的編碼方式來輸出"+str1);

36、File類的常用API

Java.io.File類表示檔案或目錄,只用於表示檔案或目錄的資訊,不能用於檔案的訪問。

常用的API:
1、建立File物件:File file = new File(String path); 注意:File.seperater();獲取系統分隔符,如:""
2、boolean file.exists();判斷檔案是否存在
3、file.mkdir();或者。file.mkdirs;建立目錄或多級目錄
4、file.isDirectory();或者file.isFile();判斷是否是目錄,或者是否是檔案。
5、file.delete();//刪除檔案或目錄
6、file.createNewFile();//建立新檔案
7、file.getName();//獲取檔名稱或目錄的絕對路徑
8、file.getAbsolutePath();//獲取絕對路徑
9、file.getParent();//獲取父級絕對路徑
10、file.getSize();//獲取檔案大小
11、file.getFormat();//獲取檔案格式

參考程式碼

package com.leeue.file;

import java.io.File;
import java.io.IOException;

/**
 * 
 * 功能:這裡列出File檔案類的所有的API
 * @author:李月
 * @Version:
 * @Date 2017年11月11日 下午3:57:08
 */
public class FileAPI {

    /**
     * 瞭解File類的建構函式
     */
    public void testConstructor(){
        /*
         * 第一種建構函式
         */
        File file = new File("F:\javaio");//這裡注意把""變成"\"
        File file1 = new File("F:"+File.separator);//使用 File.sepearator 這個來設定斜槓 
        System.out.println(file.exists());// --- true
        if(file.exists()){
            System.out.println("這個目錄存在,正在刪除這個目錄");
            file.delete();//刪除這個目錄
        }else{
            System.out.println("這個目錄不存在,開始建立這個目錄");
            file.mkdir();//建立目錄,根據file的路徑
        }
        //判斷是否是一個目錄
        System.out.println("是否是目錄 "+file.isDirectory());
        //判斷是否是檔案
        System.out.println("是否是檔案"+file.isFile());
        /**
         * 直接建立檔案物件
         */
        //File file2 = new File("F:\javaio\檔案.txt");
        File file2 = new File("F:\javaio","檔案.txt");//第二種檔案建立方式
        if(file2.exists()){//如果這個檔案存在就會刪除這個檔案
            System.out.println("檔案存在,正在刪除這個檔案");
            file2.delete();//刪除這個檔案
        }else{
            try {
                System.out.println("檔案不存在,正在建立檔案");
                file2.createNewFile();//如果這個檔案不存在就建立這個檔案
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        //常用的file物件API
        System.out.println(file);//直接列印file,是列印file的路徑  file.toString();內容 
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getName());
    }
    /**
     * 
     * @param args
     */
    public static void main(String[] args) {
        //
        FileAPI fa = new FileAPI();
        fa.testConstructor();

    }
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2331/viewspace-2799640/,如需轉載,請註明出處,否則將追究法律責任。

相關文章