public File file_put_contents(String file_name,InputStream is){
File file=new File(file_name);
OutputStream os=null;
try{
os=new FileOutputStream(file);
byte buffer[]=new byte[4*1024];
while((is.read(buffer))!=-1){
os.write(buffer);
}
os.flush();
}
catch(Exception e){
e.printStackTrace();
}
finally{
try{
os.close();
}
catch(Exception e){
e.printStackTrace();
}
}
return file;
}
方法没有报错,可是写的文件和原来不一样,导致不能用,如视频不能播放,原来是可以播放的。
基于流(Stream)的解决
流是单向的有方向性的描述信息流的对象,InputStream是输入流的接口,对程序来说是入,是读,可以从文件读,缓存区读,网络节点读等等.
写入文件,对程序来说是出,是写,就是FileOutputStream,可以写入int也可以byte[]
所以解决方案就是从InputStream中读出内存到byte[]中然后,使用FileOutputStream写入文件中.比如:其中一种写法
InputStream is = new FileInputStream("a.txt");
FileOutputStream fos = new FileOutputStream("b.txt");
byte[] b = new byte[1024];
while((is.read(b)) != -1){
fos.write(b);
}
is.close();
fos.close();
java通过InputStream读取和写入文件操作实例代码
1. File to InputStream
File file = new File("file.xml");
InputStream inputStream = new FileInputStream(file);
2.InputStream to File
InputStream inputStream = new FileInputStream("file.xml");
OutputStream outputStream = new FileOutputStream("file-new.xml");
int bytesWritten = 0;
int byteCount = 0;
byte[] bytes = new byte[1024];
while ((byteCount = inputStream.read(bytes)) != -1)
{
outputStream.write(bytes, bytesWritten, byteCount);
bytesWritten += byteCount;
}
inputStream.close();
outputStream.close();