为什么要用byte b[]=new byte[1024];?如果我的文件大于1KB,不是发生溢出了吗?

// 创建FileInputStream类对象
FileInputStream in = new FileInputStream(file);
byte byt[] = new byte[1024]; // 创建byte数组
int len = in.read(byt); // 从文件中读取信息
// 将文件中信息输出
System.out.println("文件中的信息是:" + new String(byt, 0, len));
in.close(); // 关闭流
} catch (Exception e) {
e.printStackTrace(); // 输出异常信息
}

3个回答

in.read(byt); 此处应该用while,循环读吧

你这样只能读取文件的1024字节长度的信息,,如果不用循环,你要这样定义数组byte byt[] = new byte[in.available()]; // 创建byte数组。。一般推荐循环来读取

byte数组相当于缓存,要循环去进行读写的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
struts文件下载,下载byte[]二进制,被直接打开的问题
最近在改一个原来的邮件系统,原来系统的附件是二进制,我从数据库拿出来只能是个byte[],我将其用new ByteArrayInputStream(unZip)转化为intputStream,然后通过struts2下载,以为不是FileInputStream,在客户端全部都被直接打开了,各位大神有什么解决办法 配置文件: <action name="mail_*" class="mailAction" method="{1}"> <result name="stream" type="stream"> <param name="contentType">image/png,image/jpeg,image/gif,text/plain</param> <param name="bufferSize">4096</param> <param name="contentDisposition">filename=${fileName}</param> </result> </action> action中代码: public String findFile() throws Exception { byte[] b = mailService.findFile(msgid, num,mailSt); byte[] unZip = unZip(b); HttpServletResponse resp = ServletActionContext.getResponse(); resp.setCharacterEncoding("text/html;charset=GBK"); this.inputStream = new ByteArrayInputStream(unZip); return "stream"; }
struts2下载 byte[] 被直接打开的问题
我做文件下载,struts的下载,因为原来系统是看系统,存的二进制,数据库拿出来是个byte数组,然后进行下载,前台都是被直接打开了!怎么解决呢求大神救命action代码: public String findFile() throws Exception { byte[] b = mailService.findFile(msgid, num,mailSt); byte[] unZip = unZip(b); HttpServletResponse resp = ServletActionContext.getResponse(); resp.setCharacterEncoding("text/html;charset=GBK"); this.inputStream = new ByteArrayInputStream(unZip); return "stream"; }配置文件代码: ![图片说明](https://img-ask.csdn.net/upload/201506/23/1435064119_901665.png) 求大神指导
java中使用Base64的加密方法将byte[]加密成一个字符串的问题?
![图片说明](https://img-ask.csdn.net/upload/201810/09/1539081344_450748.jpg) 这上面那个就是将byte[]加密的方法。 ``` public static void main(String[] args) throws IOException { File file = new File("C:\\Users\\libai\\Desktop\\s.pdf"); FileInputStream fis = new FileInputStream(file); ByteArrayOutputStream bos = new ByteArrayOutputStream(1000); byte[] b = new byte[1000]; int n; byte[] buffer; while ((n = fis.read(b)) != -1) { bos.write(b, 0, n); } fis.close(); bos.close(); buffer = bos.toByteArray(); File file1 = new File("C:\\Users\\libai\\Desktop\\x.pdf"); FileInputStream fis1 = new FileInputStream(file1); ByteArrayOutputStream bos1 = new ByteArrayOutputStream(1000); byte[] b1 = new byte[1000]; int n1; byte[] buffer1; while ((n1 = fis1.read(b1)) != -1) { bos1.write(b1, 0, n1); } fis1.close(); bos1.close(); buffer1 = bos1.toByteArray(); String base64Encryption = Base64Encryption(buffer); System.out.println("第一条"+base64Encryption); String base64Encryption1 = Base64Encryption(buffer1); System.out.println("第二条"+base64Encryption1); } ``` 这是测试代码 运行的瞬间,打印出的是这样, ![图片说明](https://img-ask.csdn.net/upload/201810/09/1539081545_91793.png) 过了一秒多的时间,控制台变成这样了, ![图片说明](https://img-ask.csdn.net/upload/201810/09/1539081609_28825.jpg) 不清楚是怎么回事?我是想加密多个文件,但是这样只是有最后一条的加密信息。求大神指点。
在使用fileupload上传文件时,文件内容的是表单中的普通字段,而不是源文件
使用fileupload,上传文件时,获取的文件名都正常,只有上传后的文件里面保存的是表单中的文本域,而不是原文件了,求解啊!! 这是我的servlet ``` response.setContentType("text/html; charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); //从请求对象上获取session HttpSession session = request.getSession(); // 使用Apache Common组件中的fileupload进行文件上传 //创建文件项工厂 DiskFileItemFactory df=new DiskFileItemFactory(); //极限、临界值,即硬盘缓存 1M df.setSizeThreshold(1024*1024); //贮藏室,即临时文件目录 df.setRepository(new File("D:/testFileUp")); //负责上传文件的对象 //a.负责处理上传的文件数据 b.将每部分数据封装到FileItem对象中 c.将数据写入到临时文件目录中 ServletFileUpload upload=new ServletFileUpload(df); //设置上传单个文件的最大容量50M upload.setFileSizeMax(50*1024*1024); Date date=new Date(); dirFormatter=new SimpleDateFormat("yyyyMM"); //定义表单文件名,表单中文件说明 String fileNameLong=null; String fileState=null; try { //解析请求对象 List<FileItem> items = upload.parseRequest(request); //map集合用于存储文件项中的数据 Map<String, Object> fields=new HashMap<String, Object>(); FileItem item=null; for (int i = 0; i <items.size(); i++) { item=(FileItem) items.get(i); //对文件项做判断 if(item.isFormField()){ //表单中的普通字段 fields.put(item.getFieldName(), item.getString("UTF-8")); fileState=item.getString("UTF-8");//保存文件说明 }else{ fields.put(item.getName(), item); fileNameLong=item.getName();//保存文件名 } } //获取文件后缀名 String ext=getExtension(fileNameLong); //设置上传文件名(保存后的文件名) String newfilename=date.getTime()+"."+ext; //设置上传路径 String filePath="/XgxzUploadFile/"+dirFormatter.format(date); // 判断文件夹是否存在,不存在则创建 File dirTest = new File(filePath); if (!dirTest.exists()) { dirTest.mkdirs(); } //文件路径+生成后文件名 String newPathName=filePath+"/"+newfilename; //写入文件(上传文件) // item.write(new File(newPathName)); //获取item中的上传文件的输入流 InputStream input = item.getInputStream(); //创建一个文件输出流 FileOutputStream output = new FileOutputStream(newPathName); //创建一个缓冲区 byte[]b=new byte[1024]; //判断输入流中的数据是否已经读完的标示 int len=0; //循环将输入流读入到缓冲区当中,(len=input.read(b))>0就表示in里面还有数据 while((len=input.read(b))>0){ //使用outputStream输出流将缓冲区的数据写入到指定的目录(newPathName)当中 output.write(b, 0, len); } output.flush(); input.close(); output.close(); item.delete(); ```
安卓中怎么播放一个本地的被加密的视频文件?
新手...我在做一个Android文件加密的工具,加密和解密都已经做好了,还差一个预览的功能,就是假如加密的是一个视频文件,怎么可以在边得到一个解密过的字节数组边将它播放出去? 比如这样: ``` FileInputStream fis=new FileInputStream(.......); byte[] b=new byte[1024]; int len=0; while(-1!=(len=fis.read(b))){ b=........//进行解密算法 //传输给视频控件播放? } ```
抖音开放平台的上传视频到文件服务器(/video/upload/)API为什么总是返参数不合法回?
API文档地址: https://open.douyin.com/platform/doc/OpenAPI-video-create 调用接口: ![图片说明](https://img-ask.csdn.net/upload/202003/21/1584781229_476826.png) 接口参数: ![图片说明](https://img-ask.csdn.net/upload/202003/21/1584781249_102519.png) 平台已申请的权限: ![图片说明](https://img-ask.csdn.net/upload/202003/21/1584781268_655140.png) 问题描述: 在调用 https://open.douyin.com/video/upload/接口是总数返回参数不合法,用该接口调用时所使用的open_id和access_token调用其他接口(如:/video/list/)都可返回调用成功数据,可以肯定的是,open_id和access_token参数没有问题,接口权限 (Scope: “video.create”)在开放平台已经申请并审核通过,在扫码授权时,也已经传如了Scope权限。 调用API返回结果如下: {"data":{"description":"参数不合法","error_code":2100005},"extra":{"logid":"202003211443340100140470891DF1B821","now":1584773018222}} 注:接口测试采用多种测试方式都是这个结果: 所采用的测试方式有: 1)C# 程序调用 2)jquery前端直接调用 3) postman调用 C# 实现代码: ``` var userInfo = _sessionHelper.GetSession(); var url = "https://open.douyin.com/video/upload"; string filePath = @"D:/dy3.mp4"; Dictionary<string, string> dicData = new Dictionary<string, string>(); dicData.Add("open_id", userInfo.data.open_id); dicData.Add("access_token", userInfo.data.access_token); Dictionary<string, string> dicFiles = new Dictionary<string, string>(); dicFiles.Add("video", "D:/dy3.mp4"); var res = Util.PostHttpResponse(url, dicData, dicFiles); ``` PostHttpResponse方法: ``` public static string PostHttpResponse(string url, Dictionary<string, string> postData, Dictionary<string, string> files) { HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; CookieContainer cookieContainer = new CookieContainer(); request.CookieContainer = cookieContainer; request.AllowAutoRedirect = true; request.Method = "POST"; string boundary = DateTime.Now.Ticks.ToString("X"); // 随机分隔线 request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary; byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n"); byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n"); Stream postStream = request.GetRequestStream(); postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length); //写入文本 if (postData != null && postData.Count > 0) { var keys = postData.Keys; foreach (var key in keys) { string strHeader = string.Format("Content-Disposition: form-data; name=\"{0}\"\r\n\r\n", key); byte[] strByte = System.Text.Encoding.UTF8.GetBytes(strHeader); postStream.Write(strByte, 0, strByte.Length); byte[] value = System.Text.Encoding.UTF8.GetBytes(string.Format("{0}", postData[key])); postStream.Write(value, 0, value.Length); postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length); } } postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length); //写入文件 if (files != null && files.Count > 0) { var keys = files.Keys; foreach (var key in keys) { string filePath = files[key]; int pos = filePath.LastIndexOf("\\"); string fileName = filePath.Substring(pos + 1); StringBuilder sbHeader = new StringBuilder(string.Format("Content-Disposition:form-data;name=\"{0}\";filename=\"{1}\"\r\nContent-Type:application/octet-stream\r\n\r\n", key, fileName)); byte[] postHeaderBytes = Encoding.UTF8.GetBytes(sbHeader.ToString()); FileStream fs = new FileStream(files[key], FileMode.Open, FileAccess.Read); byte[] bArr = new byte[fs.Length]; fs.Read(bArr, 0, bArr.Length); fs.Close(); postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length); postStream.Write(bArr, 0, bArr.Length); postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length); } } postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length); //结束标志 postStream.Close(); //发送请求并获取相应回应数据 HttpWebResponse response = request.GetResponse() as HttpWebResponse; //直到request.GetResponse()程序才开始向目标网页发送Post请求 Stream instream = response.GetResponseStream(); StreamReader sr = new StreamReader(instream, Encoding.UTF8); //返回结果网页(html)代码 string content = sr.ReadToEnd(); return content; } ```
请问,我用java文件流可以把MP4视频文件转换为avl格式的视频吗?
File f=new File("a.MP4"); File f1=new File("a.avl"); try { if(f1.exists()==false) f1.createNewFile(); FileInputStream fi=new FileInputStream(f); FileOutputStream fo=new FileOutputStream(f1); byte b[]=new byte[1024]; int l=0,i=1; while((l=fi.read(b))!=-1){ fo.write(b,0,l); System.out.println("have copied "+i+"kb"); i++; } System.out.println("finished"); fo.close(); fi.close();
javaWeb项目本地的文件下载没问题,部署到服务器上就无法文件下载
下载文件的代码如下: 项目在本地调试的时候,是可以正常下载本地磁盘的文件的,然后我部署到一台远程机器上,所要下载的文件能够得到他的路径,但是也不报错就是页面没有下载到文件,这是为什么? 备注:1.我在浏览器去访问那个文件的路径,404访问不到,虽然在WEB-INF下面放着。 访问路径:http://10.10.3.149:8080/alitm/WEB-INF/upload/d9209cf6856e427495dd78e4cf3d24d3_result.csv [b]package com.ecsemir.utils; import com.ecsemir.entity.ExceptUpload; import org.springframework.context.annotation.Scope; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.Date; /** * Created by zhuxiaofan01 on 2017/11/7. * 文件上传 */ @Scope("prototype") public class DownloadFile { public static void getDownloadFile(HttpServletRequest request, HttpServletResponse response,ExceptUpload exceptUpload) throws IOException, ServletException { //得到要下载的文件路径 String fpath = exceptUpload.getPath_resultCsv(); String filepath = request.getSession().getServletContext().getRealPath(fpath); //获取时间 String res; SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); String time=simpleDateFormat.format(new Date()); //得到文件名 int index1=filepath.lastIndexOf("_"); int index2=filepath.lastIndexOf("."); String fileName=time+filepath.substring(index1+1,index2)+".csv"; System.out.println("---------------------------fileName:"+fileName+"-----------------"+filepath); fileName = new String(fileName.getBytes("iso8859-1"), "UTF-8"); //得到要下载的文件 File file = new File(filepath); //如果文件不存在 if (!file.exists()) { request.setAttribute("message", "您要下载的资源已被删除!!"); request.getRequestDispatcher("/except/downloadlist.jsp").forward(request, response); return; } //设置响应头,控制浏览器下载该文件 response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); //读取要下载的文件,保存到文件输入流 FileInputStream in = new FileInputStream(file); //创建输出流 OutputStream out = response.getOutputStream(); //创建缓冲区 byte buffer[] = new byte[1024]; int len = 0; //循环将输入流中的内容读取到缓冲区当中 while ((len = in.read(buffer)) > 0) { //输出缓冲区的内容到浏览器,实现文件下载 out.write(buffer, 0, len); } //关闭文件输入流 in.close(); //关闭输出流 out.close(); } }[/b]
浏览器上传文件时字节流疑问
我要实现的功能很简单。就是通过浏览器将文件上传到远程服务器上。在编写代码过程中遇到了一些让我疑惑的问题。还请高手们指点下迷津。 ``` <form action="fileUploadServlet" method="post" enctype="multipart/form-data"> <input class="file" type="file" name="filepath" size=20 style="border:1px solid" /> <br/> <input type="submit" value="提交"> </form> ``` 这是JSP页面中的代码 ``` File f = new File("F:\\work\\temp.txt"); if(f.exists()) { f.delete(); } f.createNewFile(); OutputStream os = new FileOutputStream(f); InputStream is = req.getInputStream(); byte[] b = new byte[1024]; while(is.available()>0) { is.read(b); os.write(b); } os.flush(); os.close(); ``` 这是servlet中处理字节流的代码 在传输一些小文本的时候,是挺正常的。服务器上的缓存文件内容和要上传的文件内容一致。但当我上传一些比较大的文件(几KB的文本),发现服务器上缓存的文本内容要比实际的文本内容要多出来一部分。这是为何? 图片1,火狐浏览器中显示的发送请求时,附带的字节流 ![图片说明](https://img-ask.csdn.net/upload/201502/06/1423208071_662897.png) 图片2,服务器上缓存文件里的内容,红框部分就是多出来的 ![图片说明](https://img-ask.csdn.net/upload/201502/06/1423208070_359730.png)
Java IO流 复制文件 复制过来的文件时空白 ——为什么会这样?
[size=x-small]public void copyFile(String path1,String path2){ try { DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(path1))); DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(path2))); byte[] buf = new byte[1024]; int b; while((b=in.read())!=-1){ out.write(buf,0,b); } in.close(); out.close(); System.out.println("文件复制成功"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }[size=x-small][/size][size=small][/size][/size]
java 如何进行对网络文件的中转
大神们,请教一个问题,如何中转网络文件? 比如说一个网络文件,在我的页面上提供下载入口(这个网络文件的下载地址),点击下载即可下载这个网络文件,但来源显示的是我的域名,不是网络文件原本的域名,也就是说我这里是中转,并非下载到我的服务器,是提供给别人下载(让人感觉来源是我这,而非其他网络上) 我尝试了先读取网络文件的数据流,然后再写出去。这个方法对网络文件比较小的可以实现,但对大的文件,就会消耗在读取文件流,卡住了。。下面是代码,求大神救助 /** * 从输入流中获取字节数组 * @param inputStream * @return * @throws IOException */ public static byte[] readInputStream(InputStream inputStream) throws IOException { byte[] buffer = new byte[1024]; int len = 0; ByteArrayOutputStream bos = new ByteArrayOutputStream(); while((len = inputStream.read(buffer)) != -1) { bos.write(buffer, 0, len); } bos.close(); return bos.toByteArray(); } /** * 附件下载 */ public void downloadTaxpayer(HttpServletRequest request,HttpServletResponse response,String path){ response.reset();//可以加也可以不加 response.setContentType("application/x-download");//设置为下载application/x-download OutputStream output = null; //FileInputStream bis = null; BufferedInputStream bis = null; File file = null; try{ URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); //设置超时间为3秒 conn.setConnectTimeout(3*1000); //防止屏蔽程序抓取而返回403错误 conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); //得到输入流 InputStream inputStream = conn.getInputStream(); //获取自己数组 ========================这个位置读取大文件就会卡住了。 byte[] getData = readInputStream(inputStream); // 取得文件的后缀名。 String filenamedisplay = path.substring(path.lastIndexOf("/") + 1).toUpperCase(); file=new File(request.getSession().getServletContext().getRealPath("/")+"/pages/"+filenamedisplay); filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8"); response.addHeader("Content-Disposition","attachment;filename=" + filenamedisplay); FileOutputStream os = new FileOutputStream(file); os.write(getData); os.close(); os = null; byte[] b = new byte[1024*512]; output = response.getOutputStream(); InputStream is = new FileInputStream(file); bis = new BufferedInputStream(is); int i = 0; while((i = bis.read(b)) > 0){ output.write(b, 0, i); } output.flush(); }catch (Exception e){ e.printStackTrace(); } finally{ if(bis != null){ try { bis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } bis = null; } if(output != null){ try { output.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } output = null; } file.delete(); } }
用MappedByteBuffer写大文件
在search了很多的有关文章,没有找到用MappedByteBuffer写大文件的具体例子. 大部分都是代码类似于: [code="java"] MappedByteBuffer raf = fc.map(MapMode.READ_WRITE, 0, fc.size()); [/code] 或是 MappedByteBuffer raf = fc.map(MapMode.READ_WRITE, 0, someHardCode); [b]需求是这样的: 文件开始并不存在, 并且文件最后到底是多大我也不清楚.[/b] 我的代码如下: [code] public static void test2() throws Exception { //先将上次文件删除 new File("D:/test2.tmp").delete(); RandomAccessFile raf1 = new RandomAccessFile("D:/test2.tmp","rw"); int mapsize = 1024*100;//100K FileChannel fc = raf1.getChannel(); MappedByteBuffer raf = fc.map(MapMode.READ_WRITE, 0, mapsize); byte[] b1 = new byte[]{'a','b','c','d','e','f','g','h'}; byte[] utfstr = "this is a test".getBytes("UTF-8"); long s1 = System.currentTimeMillis(); for(int i=0;i<10000000;i++){//写一千万次, //在循环内部, 会发生 java.nio.BufferOverflowException 异常 !!!!!! raf.put(b1); raf.putInt(i); raf.putInt(i+1); raf.put(utfstr); raf.put((byte)'\n'); } long d1 = System.currentTimeMillis() - s1; fc.close(); raf1.close(); System.out.println("spent time1="+(d1/1000)); } [/code] 望有同学指定一下: 是否 MappedByteBuffer 并不适合这种 不断地 append 的写入方式, 只适合大小已经固定的文件的原来内容的改写? 如果也适合的话, 麻烦请个示例代码! 谢谢!
java 通过浏览器访问本地服务器打开一个html文件总是找不到路径
文件路径正确,并且绝对路径和相对路径都已经尝试,为啥一直报相同错误。 ``` package day29; import java.io.*; import java.net.ServerSocket; import java.net.Socket; public class BS { public static void main(String[] args) throws IOException { ServerSocket ss = new ServerSocket(8888); while (true){ Socket ac = ss.accept(); new Thread(new Runnable() { @Override public void run() { try { InputStream is = ac.getInputStream(); BufferedReader bf = new BufferedReader(new InputStreamReader(is)); String s = bf.readLine(); System.out.println(s); String[] s1 = s.split(" "); String sub = s1[1].substring(1); System.out.println(sub); FileInputStream fis = new FileInputStream(sub); OutputStream os = ac.getOutputStream(); // 写入HTTP协议响应头,固定写法 os.write("HTTP/1.1 200 OK\r\n".getBytes()); os.write("Content-Type:text/html\r\n".getBytes()); // 必须要写入空行,否则浏览器不解析 os.write("\r\n".getBytes()); int len = 0; byte[] b = new byte[1024]; while ((len = fis.read(b)) != -1){ os.write(b); fis.close(); ac.close(); } }catch (IOException E){ E.printStackTrace(); } } }).start(); } } } ``` ![图片说明](https://img-ask.csdn.net/upload/202001/16/1579188286_656266.jpg)
java 代码内容如下(客户端要生成bin文件才能交互)求问 public.bin 文件如何生成的
public static void main(String[] args) throws Exception { CertHelper help = CertHelper.getHttpCert(); Cert cert = new Cert("ticket", "8000", "http://127.0.0.1:8080/service/rbc.svc", "E:\\key\\8000\\public.bin", "gbk"); help.putCert(cert); Cert tcert = help.getCert("ticket"); System.out.println(tcert.getSignKey()); } Cert cert = new Cert(....,...,....,..,..)加载文件 (E:\\key\\8000\\public.bin) public void loadCert(String fileName) throws Exception { File file = new File(fileName); byte[] b = new byte[(int) file.length()]; FileInputStream fis = new FileInputStream(file); fis.read(b); fis.close(); ByteArrayInputStream bis = new ByteArrayInputStream(b); DataInputStream din = new DataInputStream(bis); int len = din.readInt(); keyBytes = new byte[len]; din.read(keyBytes); len = din.readInt(); modules = new byte[len]; din.read(modules); len = din.readInt(); byte[] ben = new byte[len]; din.read(ben); BigInteger message = new BigInteger(ben); setSignKey(new String(message.modPow(new BigInteger(keyBytes), new BigInteger(modules)).toByteArray())); }
关于System.out.write(byte[] b, int off, int len)方法
<div class="iteye-blog-content-contain" style="font-size: 14px;"> <pre name="code" class="java">//代码如下,try块没有写。 InputStream is = is = new FileInputStream("test.txt"); int len; byte[] b = new byte[20]; while((len = is.read(b)) != -1){ System.out.write(b, 0, len); }</pre> <p> 下面这段文字为test.txt文件的内容,</p> <pre name="code" class="java">Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于 1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有 卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级 计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业 环境下,Java更具备了显著优势和广阔前景。</pre> <p> </p> <p>运行后,多数情况能输出正常,但是偶尔会有部分乱码。如下。 请问为什么?</p> <p> </p> <p> </p> <pre name="code" class="java">Java是一种可以���写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于 1995年5月推出的Java程序设计语言���Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有 卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级 计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业 环境下,Java更具备了显著优势和广阔前景。</pre> <p> </p> <p> </p> </div>
使用java将kingbase的blob类型转换为String
存在kingbase数据库里的是PDF文件,查询出来的blob类型为com.kingbase.jdbc3.Jdbc3Blob,如何转换成String格式?使用 byte[] b = new byte[1024 * 8]; int i = 0; while ((i = is.read(b)) != -1) { sb.append(new String(b, 0, i)); } 时报错java.io.IOException: Transaction exception during operate large object at com.kingbase.largeobject.BlobInputStream.read(Unknown Source)
android 文件上传问题,使用MultipartEntityBuilder
android端: String BOUNDARY= UUID.randomUUID().toString(); boolean hasModifySuccess=false; String fileName = "contact_0.jpg"; try{ httpClient = new DefaultHttpClient(); post = new HttpPost(path); post.setHeader("Content-Type","multipart/form-data;boundary=" + BOUNDARY); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); builder.setCharset(Charset.forName("UTF-8")); File dirFile=Environment.getExternalStorageDirectory(); File newFile=new File(dirFile.getAbsolutePath()+"/InteCogeFiles/images"+fileName); FileBody fileBody = new FileBody(newFile); builder.addPart("image", fileBody); HttpEntity httpEntity = builder.build(); post.setEntity(httpEntity); response = httpClient.execute(post); if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){ inStream = response.getEntity().getContent(); hasModifySuccess = true; } }catch(Exception e){ e.printStackTrace(); } 服务端: request.setCharacterEncoding("utf-8"); DiskFileItemFactory factory = new DiskFileItemFactory(); //获取文件上传需要保存的路径,upload文件夹需存在。 String path = request.getSession().getServletContext().getRealPath("/upload"); //设置暂时存放文件的存储室,这个存储室可以和最终存储文件的文件夹不同。因为当文件很大的话会占用过多内存所以设置存储室。 factory.setRepository(new File(path)); //设置缓存的大小,当上传文件的容量超过缓存时,就放到暂时存储室。 factory.setSizeThreshold(1024*1024); //上传处理工具类(高水平API上传处理?) String error = ""; ServletFileUpload upload = new ServletFileUpload(factory); try{ //调用 parseRequest(request)方法 获得上传文件 FileItem 的集合list 可实现多文件上传。 List items = upload.parseRequest(request); System.out.print(items.size()); int maxSize=50*1024*1024; Iterator itr = items.iterator();// 枚举方法 while (itr.hasNext()) { FileItem item = (FileItem) itr.next(); //获取FileItem对象 if (!item.isFormField()) {// 判断是否为文件域 if (item.getName() != null && !item.getName().equals("")) {// 判断是否选择了文件 long upFileSize=item.getSize(); //上传文件的大小 String fileName=item.getName(); //获取文件名 System.out.print("nihao"); //System.out.println("上传文件的大小:" + item.getSize()); if(upFileSize>maxSize){ error="您上传的文件太大,请选择不超过50M的文件"; break; } // 此时文件暂存在服务器的内存中 File tempFile = new File(fileName);// 构造临时对象 String uploadPath = this.getServletContext().getRealPath("/upload"); File file = new File(uploadPath,tempFile.getName()); // 获取根目录对应的真实物理路径 InputStream is=item.getInputStream(); int buffer=1024; //定义缓冲区的大小 int length=0; byte[] b=new byte[buffer]; double percent=0; FileOutputStream fos=new FileOutputStream(file); while((length=is.read(b))!=-1){ percent+=length/(double)upFileSize*100D; //计算上传文件的百分比 fos.write(b,0,length); //向文件输出流写读取的数据 } fos.close(); Thread.sleep(1000); //线程休眠1秒 } else { error="没有选择上传文件!"; } } } } catch (Exception e) { e.printStackTrace(); error = "上传文件出现错误:" + e.getMessage(); } if (!"".equals(error)) { request.setAttribute("error", error); }else { request.setAttribute("result", "文件上传成功!"); } 在服务端中 List items = upload.parseRequest(request);一直为空,没有数据,而我用网页 <form action="http://localhost:777/intelligent_college_web/servlet/StudentServlet" enctype="multipart/form-data" method="post" > <input type="file" name="file" size="65"> <input type="submit" name="Submit" value="提交"> </form> 这样是可以在可以上传图片的。 可能是android端出了问题,因为MultipartEntityBuilder 网上的资料很少,不知道哪里出现了问题,这里跪求大神帮忙解决问题。万分感谢!
java 解压 zip文件的问题
项目中遇到问题,所以请各位帮忙。 目前通过webservice传过来一个zip文件的字节流(),需要解压后得到文件内容(转成字符串就可以)。 我在网上查了一下ZIP解压的资料,java提供的方法只能解压磁盘上的文件,没有提供解压字节流的方法, 目前只能通过将zip文件字节流保存成本地zip文件,之后读取本地ZIP文件解压后保存到本地,再读取本地解压后的文件得到内容。 其实上面的过程中,保存到本地的过程是多余的,请问有没有什么办法实现处理在内存中完成,即ZIP字节流直接在内存中解压后得到文件内容。谢谢! [b]问题补充:[/b] 回复moshalanye: 我已经把压缩的输入流转成了ZipInputStream,可是里面的内容怎么取出来啊。 ZipInputStream没有提供取出解压后的流的方法啊。 [b]问题补充:[/b] 问题解决了,果然ZipInputStream的read(byte[] b, int off, int len) 方法就可以了。谢谢! ZipInputStream zis = new ZipInputStream (new ByteArrayInputStream(zippedByte)); ZipEntry entry; if ((entry = zis.getNextEntry()) != null) { int count; byte data[]=new byte[BUFFER]; while ((count = zis.read(data))!= -1) { //对Data的操作 }
java 上传大文件(1G)报错 java.lang.OutOfMemoryError
java.lang.OutOfMemoryError: Java heap space java.util.Arrays.copyOf(Arrays.java:2271) java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113) java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93) java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:140) com.landa.util.FileToByte.getBytesFromFile(FileToByte.java:25) com.landa.action.NewsAction.addNews(NewsAction.java:111) 代码: public static byte[] getBytesFromFile(File f){ if (f == null){ return null; } try { FileInputStream stream = new FileInputStream(f); ByteArrayOutputStream out = new ByteArrayOutputStream(1000); byte[] b = new byte[1000]; int n; while ((n = stream.read(b)) != -1){ out.write(b, 0, n); } stream.close(); out.close(); return out.toByteArray(); } catch (IOException e){ e.printStackTrace(); System.out.println("程序发生错误,抛出异常为 "+e.getMessage()); }
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
python自动下载图片
近日闲来无事,总有一种无形的力量萦绕在朕身边,让朕精神涣散,昏昏欲睡。 可是,像朕这么有职业操守的社畜怎么能在上班期间睡瞌睡呢,我不禁陷入了沉思。。。。 突然旁边的IOS同事问:‘嘿,兄弟,我发现一个网站的图片很有意思啊,能不能帮我保存下来提升我的开发灵感?’ 作为一个坚强的社畜怎么能说自己不行呢,当时朕就不假思索的答应:‘oh, It’s simple. Wait for me for a ...
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
C++(数据结构与算法):62---搜索树(二叉搜索树、索引二叉搜索树)
一、搜索树的复杂度分析 本文考察二叉搜索树和索引二叉搜索树 二叉搜索树的渐进性能可以和跳表媲美: 查找、插入、删除操作所需的平均时间为Θ(logn) 查找、插入、删除操作的最坏情况的时间为Θ(n) 元素按升序输出时所需时间为Θ(n) 虽然在最坏情况下的查找、插入、删除操作,散列表和二叉搜索树的时间性能相同,但是散列表在最好的情况下具有超级性能Θ(1) 不过,对于一个指定的关键...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
立即提问