java如何用io流保存,java的io流總結

本文目錄一覽:

java如何實現 io流傳輸過來的文件,提示另存為彈出窗口?

彈出窗口,我理解為瀏覽器彈出窗口,所以必定有後端伺服器程序,這裡重點說的就是伺服器程序。

第一步:設置Response頭部(最關鍵)

response.setContentType(“application/octet-stream;charset=UTF-8”);

// 設置彈出框提示的文件名

response.addHeader(“Content-Disposition”, “attachment; filename=” + java.net.URLEncoder.encode(fileName, “UTF-8”));

第二步:解析輸入流

// 這裡的in為你的輸入流

BufferedInputStream is = new BufferedInputStream(in);

// 準備緩衝區

byte[] buffer = new byte[4096];

第三步:將輸入流轉換為輸出流

BufferedOutputStream os = new BufferedOutputStream(response.getOutputStream());

int offset = 0;

while((offset = is.read(buffer, 0, 4096) -1) {

os.write(buffer, 0, offset)

}

第四步:關閉輸入輸出流

os.close();

is.close();

JAVA怎麼用IO流保存一部電影

其實原理就是下載電影文件內容至一個IO流中,流最終是可以保存為文件的。

JAVA中我想用IO流把伺服器上的文件保存到本機

理論上講這是不行的!除非你手動進行遠程下載,因為伺服器不能自動操作客戶機,這樣做無異於病毒。

java的IO流中可以通過自定義一個數組來存儲數據,為什麼還要使用緩存區呢?

IO流自定義位元組流的緩衝區:

思路:BufferedInputStream類中read()方法的工作原理

1)先一個一個從位元組流中讀取位元組,讀取一定量(自定義)之後,存儲在一個位元組數組(緩衝區)(FileInputStream.read(byte[] b)),並獲得存儲數量(read方法的返回值)。

2)一個一個位元組返回,返回一個,存儲數量減1,然後指針往後移一位,準備取下一個。

3)如果存儲數量為0 ,代表當前數組中所有數據已經全部取完,此時再來一次讀取(read(byte[] b)),再獲得此次存儲數量。

4)如果存儲數量(即read方法返回-1),代表讀到文件末尾,返回-1。

因此,需要用到以下幾個變數:

讀取的位元組數量,指向數組中準備取哪一個的指針,將要返回的位元組變數。

java中如何通過IO流將稀疏數組寫入磁碟和從磁碟中讀取,整行存,整行取

//寫入磁碟

public static void writ(int sparseArr[][]) {

System.out.println(“寫入磁碟的數據中~~~~~~”);

File file = new File(“E:\\java\\sparseArr.txt”);

BufferedWriter bw = null;

try {

bw = new BufferedWriter(new FileWriter(file));

if (!file.exists()) {

file.createNewFile();

}

StringBuilder allBuilder = new StringBuilder();

for (int[] rows : sparseArr) {

StringBuilder rowBuilder = new StringBuilder();

for (int item : rows) {

rowBuilder.append(item + “\t”);

}

allBuilder.append(rowBuilder + “\n”);

}

bw.write(String.valueOf(allBuilder));

bw.flush();

bw.close();

} catch (IOException e) {

e.printStackTrace();

}

}

//讀取磁碟

public static int[][] read() {

System.out.println(“讀取磁碟的數據中~~~~~~”);

File file = new File(“E:\\java\\sparseArr.txt”);

int[][] sparseArr = null;

try {

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

if (!file.exists()) {

file.createNewFile();

}

String row = br.readLine();

String[] s = new String(row).split(“\t”);

sparseArr = new int[Integer.parseInt(s[0])][Integer.parseInt(s[1])];

while ((row = br.readLine()) != null) {

String[] s2 = new String(row).split(“\t”);

sparseArr[Integer.parseInt(s2[0])][Integer.parseInt(s2[1])] = Integer.parseInt(s2[2]);

}

br.close();

} catch (IOException e) {

e.printStackTrace();

}

return sparseArr;

}

java怎麼使用io流讀取一個文件夾裡面

使用工具類Properties

工具類有Load()方法 用於載入文件

首先將文件寫成流(輸入)

File file=new  File(confPath);

            in = new FileInputStream(file);

載入流load(in)如果需要操作則完成具體操作

輸出流並保存文件

out2 = new OutputStreamWriter(new FileOutputStream(confPath),”GBK”);

            cp.store(out2);

完成

具體實例代碼

public String updateConfParam(ConfParam cpl) throws IOException {

        String error = null;

        Properties cp=new Properties();

        InputStream in= null;

        OutputStreamWriter out1=null;

        OutputStreamWriter out2=null;

        JSONObject jObj = new JSONObject();

        try {

            String confPath=validateSystem(cpl.getConfAddress()+”/”+cpl.getConfName());

            File file=new  File(confPath);

            in = new FileInputStream(file);   

            cp.load(in);

            out1=new OutputStreamWriter(new FileOutputStream(confPath+”.bak”),”GBK”);

            cp.store(out1);

            cpl.setParaOldValue(cp.getProperty(cpl.getParaKey()));

            cp.setProperty(cpl.getParaKey(), cpl.getParaValue());    

            out2 = new OutputStreamWriter(new FileOutputStream(confPath),”GBK”);

            cp.store(out2);

            jObj.put(“paraOldValue”, cpl.getParaOldValue());

            jObj.put(“paraValue”, cpl.getParaValue());

        } catch (FileNotFoundException e) {

            error=e.getMessage();

        } catch (IOException e1) {

            error = e1.getMessage();

        }

        finally{

            if(in !=null){

                in.close();

            }

            if(out1 !=null){

                out1.close();

            }

            if(out2 !=null){

                out2.close();

            }

            if(error != null){

                jObj.put(“error”, error);

            }

        }

        return jObj.toString();

    }

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

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

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • 如何用Python寫愛心

    本文將會從多個方面闡述如何用Python語言來畫一個美麗的愛心圖案。 一、準備工作 在開始編寫程序之前,需要先理解一些編程基礎知識。首先是繪圖庫。Python有很多繪圖庫,常見的有…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29

發表回復

登錄後才能評論