java 图片文件的读取和写入问题
我不明白的是,为什么这个图片的大小明明有10000字节。可是我这里才把字节数组定义为2。怎么就把这个图片10000字节都读取出来并且写入到了新图片文件中了呢?这个读取和写...
我不明白的是,为什么这个图片的大小明明有10000字节。可是我这里才把字节数组定义为2。怎么就把这个图片10000字节都读取出来并且写入到 了新图片文件中了呢?
这个读取和写入的过程是怎么样的啊?非常感谢。
public static void main(String[] args) throws IOException {
File file=new File("F:\\psu.jpg");
FileInputStream is=new FileInputStream(file);
byte []b=new byte[2];
int i=is.read(b);
File copyfile=new File("F:\\psucopy.jpg");
copyfile.createNewFile();
FileOutputStream os=new FileOutputStream(copyfile);
while(i!=-1){
os.write(b, 0, b.length);
i=is.read(b, 0, b.length);
}
is.close();
os.close();
}
下面是我自己这样写的代码我是先获取图片字节大小然后也可以复制一张图片。我这样些有什么问题?
public static void ReadAndWrite() throws Exception {
//输入一张图片所在的路径
File file = new File("F:\\123.jpg");
InputStream in = new FileInputStream(file);
byte[] bytearray = new byte[692225];
int length = in.read(bytearray);
while (length != -1) {
length = in.read(bytearray);
}
in.close();
//输入一个路径用于存放复制的图片
File file1 = new File("F:\\12345.jpg");
file1.createNewFile();
OutputStream out = new FileOutputStream(file1);
out.write(bytearray);
out.close();
} 展开
这个读取和写入的过程是怎么样的啊?非常感谢。
public static void main(String[] args) throws IOException {
File file=new File("F:\\psu.jpg");
FileInputStream is=new FileInputStream(file);
byte []b=new byte[2];
int i=is.read(b);
File copyfile=new File("F:\\psucopy.jpg");
copyfile.createNewFile();
FileOutputStream os=new FileOutputStream(copyfile);
while(i!=-1){
os.write(b, 0, b.length);
i=is.read(b, 0, b.length);
}
is.close();
os.close();
}
下面是我自己这样写的代码我是先获取图片字节大小然后也可以复制一张图片。我这样些有什么问题?
public static void ReadAndWrite() throws Exception {
//输入一张图片所在的路径
File file = new File("F:\\123.jpg");
InputStream in = new FileInputStream(file);
byte[] bytearray = new byte[692225];
int length = in.read(bytearray);
while (length != -1) {
length = in.read(bytearray);
}
in.close();
//输入一个路径用于存放复制的图片
File file1 = new File("F:\\12345.jpg");
file1.createNewFile();
OutputStream out = new FileOutputStream(file1);
out.write(bytearray);
out.close();
} 展开
2个回答
展开全部
读写是两个不同的分支,通常都是分开单独使用的,但是原则就是什么文件的流就要用相应的流进行存储。
可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。
BufferedReader bre = null;
try {
String file = "D:/test/test.png";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
System.out.println(str);//原样输出读到的内容
};
备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
可以通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储,举例:
OutputStreamWriter pw = null;//定义一个流
pw = new OutputStreamWriter(new FileOutputStream(“D:/test.png”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.txt”实例
pw.write("我是要写入到记事本文件的内容");//将要写入文件的内容,可以多次write
pw.close();//关闭流
备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。
可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。
BufferedReader bre = null;
try {
String file = "D:/test/test.png";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
System.out.println(str);//原样输出读到的内容
};
备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
可以通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储,举例:
OutputStreamWriter pw = null;//定义一个流
pw = new OutputStreamWriter(new FileOutputStream(“D:/test.png”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.txt”实例
pw.write("我是要写入到记事本文件的内容");//将要写入文件的内容,可以多次write
pw.close();//关闭流
备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询