java輸入流,JAVA輸入流轉文件

本文目錄一覽:

java如何並發的訪問文件輸入流

輸入到內存。java並發的訪問文件輸入流需要當度文件時實際是從磁碟輸入到內存,故用的是輸入流,從其中讀取的信息讀到內存中,這叫輸入,即硬碟到內存。

java輸入輸出流是怎麼讀取的呢

讀取文件吧。

public class ReadFromFile {

    /**

     * 以位元組為單位讀取文件,常用於讀二進位文件,如圖片、聲音、影像等文件。

     */

    public static void readFileByBytes(String fileName) {

        File file = new File(fileName);

        InputStream in = null;

        try {

            System.out.println(“以位元組為單位讀取文件內容,一次讀一個位元組:”);

            // 一次讀一個位元組

            in = new FileInputStream(file);

            int tempbyte;

            while ((tempbyte = in.read()) != -1) {

                System.out.write(tempbyte);

            }

            in.close();

        } catch (IOException e) {

            e.printStackTrace();

            return;

        }

        try {

            System.out.println(“以位元組為單位讀取文件內容,一次讀多個位元組:”);

            // 一次讀多個位元組

            byte[] tempbytes = new byte[100];

            int byteread = 0;

            in = new FileInputStream(fileName);

            ReadFromFile.showAvailableBytes(in);

            // 讀入多個位元組到位元組數組中,byteread為一次讀入的位元組數

            while ((byteread = in.read(tempbytes)) != -1) {

                System.out.write(tempbytes, 0, byteread);

            }

        } catch (Exception e1) {

            e1.printStackTrace();

        } finally {

            if (in != null) {

                try {

                    in.close();

                } catch (IOException e1) {

                }

            }

        }

    }

    /**

     * 以字元為單位讀取文件,常用於讀文本,數字等類型的文件

     */

    public static void readFileByChars(String fileName) {

        File file = new File(fileName);

        Reader reader = null;

        try {

            System.out.println(“以字元為單位讀取文件內容,一次讀一個位元組:”);

            // 一次讀一個字元

            reader = new InputStreamReader(new FileInputStream(file));

            int tempchar;

            while ((tempchar = reader.read()) != -1) {

                // 對於windows下,\r\n這兩個字元在一起時,表示一個換行。

                // 但如果這兩個字元分開顯示時,會換兩次行。

                // 因此,屏蔽掉\r,或者屏蔽\n。否則,將會多出很多空行。

                if (((char) tempchar) != ‘\r’) {

                    System.out.print((char) tempchar);

                }

            }

            reader.close();

        } catch (Exception e) {

            e.printStackTrace();

        }

        try {

            System.out.println(“以字元為單位讀取文件內容,一次讀多個位元組:”);

            // 一次讀多個字元

            char[] tempchars = new char[30];

            int charread = 0;

            reader = new InputStreamReader(new FileInputStream(fileName));

            // 讀入多個字元到字元數組中,charread為一次讀取字元數

            while ((charread = reader.read(tempchars)) != -1) {

                // 同樣屏蔽掉\r不顯示

                if ((charread == tempchars.length)

                         (tempchars[tempchars.length – 1] != ‘\r’)) {

                    System.out.print(tempchars);

                } else {

                    for (int i = 0; i  charread; i++) {

                        if (tempchars[i] == ‘\r’) {

                            continue;

                        } else {

                            System.out.print(tempchars[i]);

                        }

                    }

                }

            }

        } catch (Exception e1) {

            e1.printStackTrace();

        } finally {

            if (reader != null) {

                try {

                    reader.close();

                } catch (IOException e1) {

                }

            }

        }

    }

    /**

     * 以行為單位讀取文件,常用於讀面向行的格式化文件

     */

    public static void readFileByLines(String fileName) {

        File file = new File(fileName);

        BufferedReader reader = null;

        try {

            System.out.println(“以行為單位讀取文件內容,一次讀一整行:”);

            reader = new BufferedReader(new FileReader(file));

            String tempString = null;

            int line = 1;

            // 一次讀入一行,直到讀入null為文件結束

            while ((tempString = reader.readLine()) != null) {

                // 顯示行號

                System.out.println(“line ” + line + “: ” + tempString);

                line++;

            }

            reader.close();

        } catch (IOException e) {

            e.printStackTrace();

        } finally {

            if (reader != null) {

                try {

                    reader.close();

                } catch (IOException e1) {

                }

            }

        }

    }

    /**

     * 隨機讀取文件內容

     */

    public static void readFileByRandomAccess(String fileName) {

        RandomAccessFile randomFile = null;

        try {

            System.out.println(“隨機讀取一段文件內容:”);

            // 打開一個隨機訪問文件流,按只讀方式

            randomFile = new RandomAccessFile(fileName, “r”);

            // 文件長度,位元組數

            long fileLength = randomFile.length();

            // 讀文件的起始位置

            int beginIndex = (fileLength  4) ? 4 : 0;

            // 將讀文件的開始位置移到beginIndex位置。

            randomFile.seek(beginIndex);

            byte[] bytes = new byte[10];

            int byteread = 0;

            // 一次讀10個位元組,如果文件內容不足10個位元組,則讀剩下的位元組。

            // 將一次讀取的位元組數賦給byteread

            while ((byteread = randomFile.read(bytes)) != -1) {

                System.out.write(bytes, 0, byteread);

            }

        } catch (IOException e) {

            e.printStackTrace();

        } finally {

            if (randomFile != null) {

                try {

                    randomFile.close();

                } catch (IOException e1) {

                }

            }

        }

    }

    /**

     * 顯示輸入流中還剩的位元組數

     */

    private static void showAvailableBytes(InputStream in) {

        try {

            System.out.println(“當前位元組輸入流中的位元組數為:” + in.available());

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

    public static void main(String[] args) {

        String fileName = “C:/temp/newTemp.txt”;

        ReadFromFile.readFileByBytes(fileName);

        ReadFromFile.readFileByChars(fileName);

        ReadFromFile.readFileByLines(fileName);

        ReadFromFile.readFileByRandomAccess(fileName);

    }

}

JAVA的輸入輸出流是什麼?有幾種?

以下是個人理解。流可以分為位元組流和字元流區別嘛,你去搞清楚位元組和字元的區別就知道了。流,其實沒必要認為太高深,位元組流的輸入流,就是InputStream,他有個read()方法,而且有很多重載read(byte[]b)什麼的,就是把文件轉換成位元組,後一個方法就是把轉換的位元組放到一個byte數組中。例如你定義一個File file=new File(“d:/test.txt”);byte[]b=new byte[1024];FileInputStream fis=new FileInputStream(file);fis.read(b);fis.close();//b里現在就放的是從文件d:/test.txt讀取的位元組(當然這不太嚴謹,可能會有錯誤)//現在是輸出流FileOutputStream fos=new FileOutputStream(new File(“d:/target.txt”));//write方法這個是byte數組中的位元組放到目的文件d:/target.txt中fos.write(b);fos.close();這個是很簡單的寫法,沒考慮文件大小,出現數組越界千萬別怪我,手敲代碼很煩呢,可能有錯誤,自己慢慢體會,這個急不來

java中的輸入輸出流的四大基本類是什麼?

java.io常用四個基本類如下:

InputStream:繼承自InputStream的流都是用於向程序中輸入數據的,且數據單位都是位元組(8位)。

OutputSteam:繼承自OutputStream的流都是程序用於向外輸出數據的,且數據單位都是位元組(8位)。

Reader:繼承自Reader的流都是用於向程序中輸入數據的,且數據單位都是字元(16位)。

Writer:繼承自Writer的流都是程序用於向外輸出數據的,且數據單位都是字元(16位)。

java怎麼區分輸入流和輸出流

outputstream位元組輸出流:是為了把內存里的東西轉到文件,是把內容輸出出去寫出去。

inputstream位元組輸入流:文件上的內容轉到內存,是讀

reader字元輸入流

writer字元輸出流

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/190052.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-29 13:53
下一篇 2024-11-29 13:53

相關推薦

發表回復

登錄後才能評論