问题描述
packagep1;importjava.io.*;publicclassjiami{publicjiami(){try{FileReaderrtext=newFileReader(windows.gettext());//reader和writer要分清FileWriterwtext=newFileWriter("C:\Users\Administrator\Desktop\name_jiami.jpg");intreadbyte;do{readbyte=rtext.read();if(readbyte!=-1){wtext.write(readbyte);}}while(readbyte!=-1);rtext.close();wtext.close();}catch(IOExceptione){System.out.println("地址无效");//e.printStackTrace();}}}
[size=18px]如上代码:①我想要实现一个一个字节的读取一个图片,然后加密字节。②再将加密过的字节一个一个输入到一个新的图片文件(会显示已损坏)③问题就来了,我还没加密呢,输入到一个新的文件就已经显示“图片已损坏”④不想用ImageIO.write,是进行一个一个字节的输入输出,我对IO不太懂,望大神教教我。[size=18px]
解决方案
解决方案二:
图片是二进制,显然不能用Reader和Writer,只能用InputStream和OutputStream
解决方案三:
图片是二进制,显然不能用Reader和Writer,只能用InputStream和OutputStream
解决方案四:
图片是二进制,显然不能用Reader和Writer,只能用InputStream和OutputStream
解决方案五:
楼上正解,使用InputStream和OutputStream
解决方案六:
你操作图片竟然用的是Reader和Writer......他们操作的是字符。。图片属于字节系列,,,用个字节流。。。其实你的功能很简单啊,,在循环中实现加密就行了啊,但是有一点,,,,加密后就不是图片了就不是正常的图片了,你知道么?用其他后缀
解决方案七:
你操作图片竟然用的是Reader和Writer......他们操作的是字符。。图片属于字节系列,,,用个字节流。。。其实你的功能很简单啊,,在循环中实现加密就行了啊,但是有一点,,,,加密后就不是图片了就不是正常的图片了,你知道么?用其他后缀
解决方案八:
你操作图片竟然用的是Reader和Writer......他们操作的是字符。。图片属于字节系列,,,用个字节流。。。其实你的功能很简单啊,,在循环中实现加密就行了啊,但是有一点,,,,加密后就不是图片了就不是正常的图片了,你知道么?用其他后缀
解决方案九:
使用inputStreqm和outputStream,读的时候先读到数组中,然后把数组的长度设为1这样每次就只能读一个字节
解决方案十:
使用inputStreqm和outputStream,读的时候先读到数组中,然后把数组的长度设为1这样每次就只能读一个字节
解决方案十一:
使用inputStreqm和outputStream,读的时候先读到数组中,然后把数组的长度设为1这样每次就只能读一个字节
解决方案十二:
packagep1;importjava.io.*;publicclassjiami{publicjiami(){try{FileInputStreamrtext=newFileInputStream(windows.gettext());//reader和writer要分清FileOutputStreamwtext=newFileOutputStream("C:\Users\Administrator\Desktop\name_jiami.jpg");intreadbyte;do{readbyte=rtext.read();if(readbyte!=-1){//可以在这里操作readbyte加密readbyte=readbyte^0xff;//简单的加密同时也是解密wtext.write(readbyte);}}while(readbyte!=-1);rtext.close();wtext.close();}catch(IOExceptione){System.out.println("地址无效");//e.printStackTrace();}}}
解决方案十三:
packagep1;importjava.io.*;publicclassjiami{publicjiami(){try{FileInputStreamrtext=newFileInputStream(windows.gettext());//reader和writer要分清FileOutputStreamwtext=newFileOutputStream("C:\Users\Administrator\Desktop\name_jiami.jpg");intreadbyte;do{readbyte=rtext.read();if(readbyte!=-1){//可以在这里操作readbyte加密readbyte=readbyte^0xff;//简单的加密同时也是解密wtext.write(readbyte);}}while(readbyte!=-1);rtext.close();wtext.close();}catch(IOExceptione){System.out.println("地址无效");//e.printStackTrace();}}}
解决方案十四:
packagep1;importjava.io.*;publicclassjiami{publicjiami(){try{FileInputStreamrtext=newFileInputStream(windows.gettext());//reader和writer要分清FileOutputStreamwtext=newFileOutputStream("C:\Users\Administrator\Desktop\name_jiami.jpg");intreadbyte;do{readbyte=rtext.read();if(readbyte!=-1){//可以在这里操作readbyte加密readbyte=readbyte^0xff;//简单的加密同时也是解密wtext.write(readbyte);}}while(readbyte!=-1);rtext.close();wtext.close();}catch(IOExceptione){System.out.println("地址无效");//e.printStackTrace();}}}
解决方案十五:
你的方法用错了,应该是InputStream&OutputStream,就是在一个字节一个字节的读取,读到最后一个字节返回-1