溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發(fā)技術 > 
  • 編程語言 > 
  • java _io_圖片到內(nèi)存(字節(jié)數(shù)組),字節(jié)數(shù)組到文件,練習文件流和字節(jié)數(shù)組流

java _io_圖片到內(nèi)存(字節(jié)數(shù)組),字節(jié)數(shù)組到文件,練習文件流和字節(jié)數(shù)組流

發(fā)布時間:2020-07-04 12:38:09 來源:網(wǎng)絡 閱讀:386 作者:wx5d21d5e6e5ab1 欄目:編程語言

//讀取圖片到字節(jié)數(shù)組(內(nèi)存),然后返回寫入的字節(jié)數(shù)組
//讀取返回的字節(jié)數(shù)組,寫入到文件

public class test{
    public static void main(String[]args)
    {
        String path="C:/Users/10853/eclipse-workspace/hell/linux學習路線.png";

    byte[] data=toByteArray(path); //圖片不能直接到字節(jié)數(shù)組中,is.read()返回的是int類型的大小,new String是解碼
    //需要寫入字節(jié)數(shù)組(內(nèi)存)再通過方法返回到字節(jié)數(shù)組里
    //圖片不能直接轉(zhuǎn)換成字符串
    toFile(data,"D:/d/to.txt");

}
//圖片到字節(jié)數(shù)組中
public static byte[] toByteArray(String path)
{
    File f =new File(path);
    byte[] last=null;

    InputStream is =null;  //選用字節(jié)流是因為,字符流只能讀純字符文本
    ByteArrayOutputStream bos=null;

    try {
        is =new FileInputStream(f);
        bos =new ByteArrayOutputStream();

        byte[] flush=new byte[1024*10];
        int len=-1;
        try {
            while((len=is.read(flush))!=-1)
            {
                bos.write(flush,0,len);  //寫出到字節(jié)數(shù)組中
                bos.flush();
            }

            return bos.toByteArray();  //不返回字節(jié)數(shù)組的話,不知道讀取哪段內(nèi)存

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }catch(FileNotFoundException e)
    {
        e.printStackTrace();
    }finally
    {
        try {
        if(null!=is)
        {
            is.close();
        }

        }catch(IOException e)
        {
            e.printStackTrace();
        }
    }

    return null;

}

//字節(jié)數(shù)組寫出到文件
//字節(jié)數(shù)組讀取到程序中 ByteArrayInputStream
//程序?qū)懗龅轿募?FileOutputStream

public static void toFile(byte[] src,String path)
{
    InputStream is=null;
    OutputStream os=null;
    try
    { 
        is=new ByteArrayInputStream(src);  ///讀取字節(jié)數(shù)組要用字節(jié)數(shù)組讀取流,不能用FileInputStream文件讀取流

        os=new FileOutputStream(path);
        byte[] flush =new byte[1024*10];
        int len=-1;
        while((len=is.read(flush))!=-1)
        {
            os.write(flush,0,len);
            os.flush();
        }

    }catch(IOException e)
    {
        e.printStackTrace();
    }finally {
        try {
            if(null!=os)
            {
                os.close();
            }
        }catch(IOException e)
        {
            e.printStackTrace();
        }
    }

}

}
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI