读书人

sun.io.MalformedInputException

发布时间: 2011-11-13 21:39:11 作者: rapoo

◆◇◆ 怎么我能读 txt 文件,但却不能读 jpg 文件? ◆◇◆
代码如下:

String strSourceFile = "D:/test.jpg ";
String strTargetFile = "D:/test_copy.jpg ";

File fileSource = new File(strSourceFile);
File fileTarget = new File(strTargetFile);

int intFileLength = Integer.parseInt(Long.toString(fileSource.length()));

char[] chrFileContent = new char[intFileLength];

FileReader fileReader = new FileReader(strSourceFile);

fileReader.read(chrFileContent, 0, intFileLength);

fileReader.close();

if (!fileTarget.exists())
{
fileTarget.createNewFile();
}

FileWriter fileWriter = new FileWriter(strTargetFile);

fileWriter.write(chrFileContent, 0, intFileLength);

fileWriter.close();

System.out.println( "OK! ");

=====================================================

读 txt 文件的时候一切顺利,但读 jpg 文件时候却报出如下错误:

--------------------Configuration: Test - JDK version 1.4 <Default> - <Default> --------------------
sun.io.MalformedInputException
at sun.io.ByteToCharGB18030.convert(ByteToCharGB18030.java:178)
at sun.nio.cs.StreamDecoder$ConverterSD.convertInto(StreamDecoder.java:247)
at sun.nio.cs.StreamDecoder$ConverterSD.implRead(StreamDecoder.java:297)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:182)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at Test.Program.CopyFile(Program.java:56)
at Test.Program.main(Program.java:10)
Exception in thread "main "
Process completed.

[解决办法]
Reader是用于读取字符流的!

FileReader --> FileInputStream
FileWriter --> FileoutputStream
[解决办法]
这边有段 文件拷贝的 代码,你参考一下

public boolean copyfile() {
File srcFile = new File( "F:\\privateFile\\33.jpg ");
File decFile = new File( "C:\\x.jpg ");
try {

FileInputStream fis = new FileInputStream(srcFile);
FileOutputStream ops = new FileOutputStream(decFile);
int n;
byte buff[] = new byte[1024 * 4];
decFile.createNewFile();
while ((n = fis.read(buff)) != -1) {
ops.write(buff, 0, n);

}
ops.flush();
fis.close();
ops.close();

} catch (FileNotFoundException e) {
System.out.println(e);
} catch (IOException er) {
System.out.println(er);
return false;
}
return true;

}

读书人网 >J2SE开发

热点推荐