import java.io.FileInputStream
import java.io.IOException
import java.io.InputStream
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
getBytesFromFile(new File("C:\\薯胡aaa.txt"))
}catch(IOException e){
System.out.println("IOException")
}
}
// 返回一个byte数组
public static byte[] getBytesFromFile(File file) throws IOException {
InputStream is = new FileInputStream(file)
// 获取文件轮扰大小
long length = file.length()
if (length >Integer.MAX_VALUE) {
// 文件太大,无法读取
throw new IOException("File is to large "+file.getName())
}
// 创建一个数据来保存文件数据
byte[] bytes = new byte[(int)length]
// 读取数据到byte数组中
int offset = 0
int numRead = 0
while (offset <bytes.length
&&(numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
offset += numRead
}
// 确保所有数据均被读取
if (offset <bytes.length) {
throw new IOException("Could not completely read file "数桐拦+file.getName())
}
// Close the input stream and return bytes
is.close()
return bytes
}
}
java将文件转换为byte数组,主要是使用输出流,实例如下:
/*** 根据byte数组,生成文件
*/
public static void getFile(byte[] bfile, String filePath,String fileName) {
者族 BufferedOutputStream bos = null //新建一个输出流
FileOutputStream fos = null //w文件包装输出流
File file = null
首型弊 try {
File dir = new File(filePath)
if(!dir.exists()&&dir.isDirectory()){//判断文件目录是否存在
dir.mkdirs()
}
file = new File(filePath+"\\"+fileName) //新建一个file类
fos = new FileOutputStream(file)
bos = new BufferedOutputStream(fos) //输出的byte文件
bos.write(bfile)
} catch (Exception e) {
e.printStackTrace()
} finally {
if (bos != null) {
租搏 try {
bos.close() //关闭资源
} catch (IOException e1) {
e1.printStackTrace()
}
}
if (fos != null) {
try {
fos.close() //关闭资源
} catch (IOException e1) {
e1.printStackTrace()
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)