怎样实现一个一个字节的读取一个图片/视频/文本

套件 2014-12-04 03:42:23
package p1;
import java.io.*;

public class jiami {

public jiami() {
try{
FileReader rtext = new FileReader(windows.gettext());//reader和writer要分清
FileWriter wtext = new FileWriter("C:\\Users\\Administrator\\Desktop\\name_jiami.jpg");
int readbyte;
do{
readbyte = rtext.read();
if(readbyte!=-1){
wtext.write(readbyte);}
}while(readbyte!=-1);
rtext.close();
wtext.close();
} catch (IOException e) {
System.out.println("地址无效");
// e.printStackTrace();
}
}

}



[size=18px]如上代码:
①我想要实现一个一个字节的读取一个图片,然后加密字节。
②再将加密过的字节一个一个输入到一个新的图片文件(会显示已损坏)
③问题就来了,我还没加密呢,输入到一个新的文件就已经显示“图片已损坏”
④不想用ImageIO.write,是进行一个一个字节的输入输出,我对IO不太懂,望大神教教我。
[size=18px]
...全文
305 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Smile_Ren 2014-12-04
  • 打赏
  • 举报
回复
你的方法用错了,应该是InputStream&OutputStream,就是在一个字节一个字节的读取,读到最后一个字节返回-1
Runner6587 2014-12-04
  • 打赏
  • 举报
回复
package p1; import java.io.*; public class jiami { public jiami() { try{ FileInputStream rtext = new FileInputStream(windows.gettext());//reader和writer要分清 FileOutputStream wtext = new FileOutputStream ("C:\\Users\\Administrator\\Desktop\\name_jiami.jpg"); int readbyte; do{ readbyte = rtext.read(); if(readbyte!=-1){ //可以在这里操作readbyte加密 readbyte=readbyte^0xff; //简单的加密同时也是解密 wtext.write(readbyte);} }while(readbyte!=-1); rtext.close(); wtext.close(); } catch (IOException e) { System.out.println("地址无效"); // e.printStackTrace(); } } }
Runner6587 2014-12-04
  • 打赏
  • 举报
回复
package p1; import java.io.*; public class jiami { public jiami() { try{ FileInputStream rtext = new FileInputStream(windows.gettext());//reader和writer要分清 FileOutputStream wtext = new FileOutputStream ("C:\\Users\\Administrator\\Desktop\\name_jiami.jpg"); int readbyte; do{ readbyte = rtext.read(); if(readbyte!=-1){ //可以在这里操作readbyte加密 readbyte=readbyte^0xff; //简单的加密同时也是解密 wtext.write(readbyte);} }while(readbyte!=-1); rtext.close(); wtext.close(); } catch (IOException e) { System.out.println("地址无效"); // e.printStackTrace(); } } }
Runner6587 2014-12-04
  • 打赏
  • 举报
回复
package p1; import java.io.*; public class jiami { public jiami() { try{ FileInputStream rtext = new FileInputStream(windows.gettext());//reader和writer要分清 FileOutputStream wtext = new FileOutputStream ("C:\\Users\\Administrator\\Desktop\\name_jiami.jpg"); int readbyte; do{ readbyte = rtext.read(); if(readbyte!=-1){ //可以在这里操作readbyte加密 readbyte=readbyte^0xff; //简单的加密同时也是解密 wtext.write(readbyte);} }while(readbyte!=-1); rtext.close(); wtext.close(); } catch (IOException e) { System.out.println("地址无效"); // e.printStackTrace(); } } }
sayhiyang 2014-12-04
  • 打赏
  • 举报
回复
使用inputStreqm 和outputStream,读的时候先读到数组中,然后把数组的长度设为1这样每次就只能读一个字节
sayhiyang 2014-12-04
  • 打赏
  • 举报
回复
使用inputStreqm 和outputStream,读的时候先读到数组中,然后把数组的长度设为1这样每次就只能读一个字节
sayhiyang 2014-12-04
  • 打赏
  • 举报
回复
使用inputStreqm 和outputStream,读的时候先读到数组中,然后把数组的长度设为1这样每次就只能读一个字节
乔不思 2014-12-04
  • 打赏
  • 举报
回复
你 操作图片 竟然用的是 Reader 和 Writer ...... 他们操作的是 字符。。 图片 属于 字节系列,,,用个 字节流。。。 其实你的功能很简单啊,,在循环中 实现 加密就行了啊, 但是 有一点,,,,加密后 就不是 图片了 就不是正常的 图片了,你知道么 ? 用 其他后缀
乔不思 2014-12-04
  • 打赏
  • 举报
回复
你 操作图片 竟然用的是 Reader 和 Writer ...... 他们操作的是 字符。。 图片 属于 字节系列,,,用个 字节流。。。 其实你的功能很简单啊,,在循环中 实现 加密就行了啊, 但是 有一点,,,,加密后 就不是 图片了 就不是正常的 图片了,你知道么 ? 用 其他后缀
乔不思 2014-12-04
  • 打赏
  • 举报
回复
你 操作图片 竟然用的是 Reader 和 Writer ...... 他们操作的是 字符。。 图片 属于 字节系列,,,用个 字节流。。。 其实你的功能很简单啊,,在循环中 实现 加密就行了啊, 但是 有一点,,,,加密后 就不是 图片了 就不是正常的 图片了,你知道么 ? 用 其他后缀
wyc_ 2014-12-04
  • 打赏
  • 举报
回复
楼上正解,使用InputStream和OutputStream
淡定的峰哥 2014-12-04
  • 打赏
  • 举报
回复
图片是二进制,显然不能用Reader和Writer,只能用InputStream和OutputStream
淡定的峰哥 2014-12-04
  • 打赏
  • 举报
回复
图片是二进制,显然不能用Reader和Writer,只能用InputStream和OutputStream
淡定的峰哥 2014-12-04
  • 打赏
  • 举报
回复
图片是二进制,显然不能用Reader和Writer,只能用InputStream和OutputStream

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧