您好,登錄后才能下訂單哦!
//讀取圖片到字節數組(內存),然后返回寫入的字節數組
//讀取返回的字節數組,寫入到文件
public class test{
public static void main(String[]args)
{
String path="C:/Users/10853/eclipse-workspace/hell/linux學習路線.png";
byte[] data=toByteArray(path); //圖片不能直接到字節數組中,is.read()返回的是int類型的大小,new String是解碼
//需要寫入字節數組(內存)再通過方法返回到字節數組里
//圖片不能直接轉換成字符串
toFile(data,"D:/d/to.txt");
}
//圖片到字節數組中
public static byte[] toByteArray(String path)
{
File f =new File(path);
byte[] last=null;
InputStream is =null; //選用字節流是因為,字符流只能讀純字符文本
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); //寫出到字節數組中
bos.flush();
}
return bos.toByteArray(); //不返回字節數組的話,不知道讀取哪段內存
} 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;
}
//字節數組寫出到文件
//字節數組讀取到程序中 ByteArrayInputStream
//程序寫出到文件 FileOutputStream
public static void toFile(byte[] src,String path)
{
InputStream is=null;
OutputStream os=null;
try
{
is=new ByteArrayInputStream(src); ///讀取字節數組要用字節數組讀取流,不能用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();
}
}
}
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。