当前位置:首页 > 开发语言 > 正文

dataoutputstream乱码?ByteArrayOutputStream编码

dataoutputstream乱码?ByteArrayOutputStream编码

大家好,今天给各位分享dataoutputstream乱码的一些知识,其中也会对ByteArrayOutputStream编码进行解释,文章篇幅可能偏长,如果能碰巧解决...

大家好,今天给各位分享dataoutputstream乱码的一些知识,其中也会对ByteArrayOutputStream编码进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!

Java如何实现自动关闭资源

Java7新增机制——自动关闭资源的try语句

1自动关闭资源介绍

Java7增强了try语句的功能——它允许在try关键字后跟一对圆括号,圆括号可以声明,初始化一个或多个资源,此处的资源指得是那些必须在程序结束时必须关闭的资源(比如数据库连接,网络连接等),try语句在该语句结束时自动关闭这些资源。

为了保证try语句可以正常关闭资源,这些资源实现类必须实现Closeable或AutoCloseable接口,实现这些类就必须实现close方法。

2代码示例

importjava.io.*;

publicclassAutoCloseTest

{

publicstaticvoidmain(String[]args)

throwsIOException

{

try(

//声明、初始化两个可关闭的资源

//try语句会自动关闭这两个资源。

BufferedReaderbr=newBufferedReader(

newFileReader("AutoCloseTest.java"));

PrintStreamps=newPrintStream(new

FileOutputStream("a.txt")))

{

//使用两个资源

System.out.println(br.readLine());

ps.println("庄生晓梦迷蝴蝶");

}

}

}

3运行结果

E:\test\Java\Java8\ExceptionTEST\src>javaAutoCloseTest

importjava.io.*;

文件a.txt中生成

庄生晓梦迷蝴蝶

4结果分析

try后的小括号分别声明,初始化两个IO流,由于BufferedReader,PrintStream都实现了Closeable接口,而且它们放在try语句中声明和初始化,所有try语法会自动关闭它们。因此上面的代码是安全的。

谢谢大家

tcp端口阻塞解决方法

1、前提要有个外网IP,如果没有就给运营商打电话,告诉他你要个外网IP,要不然不能下载。

3、使用下面解决办法的时候,要先关闭系统防火墙(不想关闭,可以在防火墙添加允许程序)。

5、解决办法1:去路由器设置界面,打开upnp。

7、解决办法2:去路由器设置界面,设置端口转发,TCP和UDP,端口22223,指向本机IP。

java里面的节点流和处理流是什么意思a

按照流是否直接与特定的地方(如磁盘、内存、设备等)相连,分为节点流和处理流两类。

节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader.

处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。

JAVA常用的节点流有以下几个:

文件FileInputStreamFileOutputStreanFileReaderFileWriter文件进行处理的节点流。

字符串StringReaderStringWriter对字符串进行处理的节点流。

数组ByteArrayInputStreamByteArrayOutputStreamCharArrayReaderCharArrayWriter对数组进行处理的节点流(对应的不再是文件,而是内存中的一个数组)。

管道PipedInputStreamPipedOutputStreamPipedReaderPipedWriter对管道进行处理的节点流。

父类InputStreamOutputStreamReaderWriter

常用处理流(关闭处理流使用关闭里面的节点流)

缓冲流:BufferedInputStreanBufferedOutputStreamBufferedReaderBufferedWriter

增加缓冲功能,避免频繁读写硬盘。

转换流:InputStreamReaderOutputStreamReader实现字节流和字符流之间的转换。

数据流DataInputStreamDataOutputStream等-提供将基础数据类型写入到文件中,或者读取出来。

电子邮件导出的excel表格文件名乱码是什么原因

因为经常要用到导出功能,之前因为文件名乱码,所以都用英文或是拼音缩写来代替,今天特意要接觉下这个问题。顺便记录下。望对小白有用。

/**

*导出结算详情列表

*@return

*/

publicvoiddepositLogExport()

{

Stringtitle="押金流水报表";

StringexcelName="押金流水报表.xls";

OutputStreamos=null;

try

{

intshopId=newLong(getShopLoginer().getShop().getId()).intValue();

if(date==null){

date=newDateBean();

}

intcount=service.getCount(shopId,date);

Page<DepositLog>pageResult=newPage<DepositLog>();

if(count>0){

pageResult=service.list(1,count,shopId,date);

}

List<Map<String,Object>>list=newArrayList<Map<String,Object>>();

doubleshopDeposit=getShopLoginer().getShop().getDeposit();

for(DepositLogs:pageResult.getData())

{

Map<String,Object>map=newHashMap<String,Object>();

map.put("id",s.getId());

map.put("depositSn",s.getDepositSn());

map.put("createTime",StringUtils.timestampToString(s.getCreateTime()));

map.put("type",type[s.getType()]);

map.put("amount",s.getAmount());

map.put("depositRest",s.getDepositRest());

map.put("depositGap",shopDeposit-s.getDepositRest());

map.put("userName",s.getUserName());

map.put("remarks",s.getRemarks());

list.add(map);

}

//表格表头

String[]header={"流水号","流水时间","类型","流水金额","押金余额","押金缺口","操作人","备注"};

//对应Map中的key

String[]key={"depositSn","createTime","type",

"amount","depositRest","depositGap","userName","remarks"};

HSSFWorkbookworkbook=null;

HttpServletResponseresponse=ServletActionContext

.getResponse();

workbook=ExportUtil.workPaperExport(list,header,key,

title,true,null,null,null);

os=response.getOutputStream();

response.setHeader("Content-disposition",

"attachment;filename="+toUtf8String(excelName));

response.setContentType("application/msexcel;charset=UTF-8");

workbook.write(os);

os.flush();

}catch(Exceptione){

if(logger.isDebugEnabled())

logger.error(e.getMessage(),e);

e.printStackTrace();

}finally{

try{

if(os!=null)

os.close();

}catch(IOExceptione){

if(logger.isInfoEnabled())

logger.error(e.getMessage(),e);

e.printStackTrace();

}

}

//returnnull;

}

//文件名乱码处理

publicstaticStringtoUtf8String(Strings){

StringBuffersb=newStringBuffer();

for(inti=0;i<s.length();i++){

charc=s.charAt(i);

if(c>=0&&c<=255){sb.append(c);}

else{

byte[]b;

try{b=Character.toString(c).getBytes("utf-8");}

catch(Exceptionex){

System.out.println(ex);

b=newbyte[0];

}

for(intj=0;j<b.length;j++){

intk=b[j];

if(k<0)k+=256;

sb.append("%"+Integer.toHexString(k).toUpperCase());

}

}

}

returnsb.toString();

}

Java面试题目网站有哪些

面试题你可以关注头条号“互联网IT技术”,里边就有面试题讲解,并有答案。其中不乏名企的面试题目。

同时,这里每天都会发布技术文章,不但让自己知道如何做面试题,还真正了解技术,在最终的一对一的面试中,也能有帮助,下边列举其中一部分文章,不如:

京东和腾讯精选12道Java笔试题并有答案

Java:重入锁ReentranLock详解、代码实战、与Synchronized对比

Java:XML基本语法、DOM、SAX、JDOM、DOM4J综合对比和代码实战

Java网络编程:TCP和UDP通信模型详解及基于代码实战的通信编程

Java并发编程:基于代码实战的4种线程池和缓冲队列BlockingQueue

欢迎大家关注头条号“互联网IT技术”,这个头条号每天都发布技术文章,包括Java、大数据、前端、Android、IOS等方向,还不定期发布相关的技术面试题讲解,鼓励大家发散式讨论,互相帮助和成长。

byte[]数组如何转换成fileInputStream

如果必须要用FileOutputStream的话那是没有办法的,因为FileOutputStream是属于比较底层的流,所有的构造方法都与文件关联。

但是如果要写入blob中的话使用FileOutputStream却是有点儿多余的,因为像你那样写入文件读出来之后同样还是byte数组,所以可以直接使用OutputStream的write(byte[]b,intoff,intlen)方法,OFF开始标记一般设为0,len偏移量一般设为byte的length大小

如果你还想了解更多这方面的信息,记得收藏关注本站。

最新文章