6 java IO

合集下载

java.io.tmpdir指定的路径在哪?

java.io.tmpdir指定的路径在哪?

java.io.tmpdir指定的路径在哪?Java.io.tmpdir介绍System.getproperty(“java.io.tmpdir”)是获取操作系统缓存的临时⽬录,不同操作系统的缓存临时⽬录不⼀样,在Windows的缓存⽬录为:C:\Users\登录⽤户~1\AppData\Local\Temp\Linux:/tmpSystem.getProperty(“”),可以操作⼀下参数:java.version Java运⾏时环境版本java.vendor Java运⾏时环境供应商java.vendor.url Java供应商的 URLjava.home Java安装⽬录java.vm.specification.version Java虚拟机规范版本java.vm.specification.vendor Java虚拟机规范供应商 Java虚拟机规范名称java.vm.version Java虚拟机实现版本java.vm.vendor Java虚拟机实现供应商 Java虚拟机实现名称java.specification.version Java运⾏时环境规范版本java.specification.vendor Java运⾏时环境规范供应商 Java运⾏时环境规范名称java.class.version Java类格式版本号java.class.path Java类路径java.library.path加载库时搜索的路径列表java.io.tmpdir默认的临时⽂件路径piler要使⽤的 JIT 编译器的名称java.ext.dirs⼀个或多个扩展⽬录的路径操作系统的名称os.arch操作系统的架构os.version操作系统的版本file.separator⽂件分隔符(在 UNIX 系统中是“/”)path.separator路径分隔符(在 UNIX 系统中是“:”)line.separator⾏分隔符(在 UNIX 系统中是“/n”)⽤户的账户名称user.home⽤户的主⽬录user.dir⽤户的当前⼯作⽬录如:System.out.println(System.getProperty("java.io.tmpdir"));C:\Users\Kim\AppData\Local\Temp\System.out.println(System.getProperty("java.vendor.url"));。

java中的imageio.write 用法

java中的imageio.write 用法

java中的imageio.write 用法imageio.write() 是Java 中用于将图像数据写入图像文件的方法。

它允许开发人员将图像数据以不同的格式(例如JPEG、PNG、BMP等)保存到本地磁盘上的文件中。

imageio.write() 方法的使用方法如下:javapublic static boolean write(RenderedImage im, String formatName, File output) throws IOException {ImageWriter writer = null;ImageOutputStream ios = null;try {根据格式名称获取合适的图像写入器Iterator<ImageWriter> writers =ImageIO.getImageWritersByFormatName(formatName);if (!writers.hasNext()) {throw new UnsupportedOperationException("Unsupported image format: " + formatName);}writer = writers.next();创建图像输出流ios = ImageIO.createImageOutputStream(output);writer.setOutput(ios);设置压缩参数ImageWriteParam param = writer.getDefaultWriteParam();if (formatName.equalsIgnoreCase("JPEG") formatName.equalsIgnoreCase("JPG")) {param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);param.setCompressionQuality(0.8f);}写入图像文件writer.write(null, new IIOImage(im, null, null), param);return true;} finally {关闭资源if (writer != null) {writer.dispose();}if (ios != null) {ios.close();}}}上述代码展示了一个基本的使用imageio.write() 方法保存图像的示例。

黑马Java-IO知识测试附答案

黑马Java-IO知识测试附答案

IO 部分测试题考试宣言:同学们, 考试考多少分不是我们的目的! 排在班级多少的名次也不是我们的初衷!我们考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了, 那么不用怕, 考完试后, 导师讲解的时候你要注意听! 那时候学会了, 记住了, 也一样不影响你高薪就业!本套题共40道不定项选择题,其中单选30道,多选10道。

单选2分/题,多选4分/题。

多选题不全对半分,全对满分。

1.下列叙述中,正确的是 ( )A. Reader是一个读取文本文件的接口B. Reader是读取二进制数据文件的抽象类C. Reader是一个读取文本文件的抽象类D. Reader是读取二进制数据文件的一般类2.下面关于IO流的说法正确的是( )A. IO流可以分为字节流和字符流B. 和是专门用于读取和写入文本文件的C. 顶层类有InputStream和OutputStreamD. 顶层类有Reader和Writer,他们都是接口//抽象类3.类描述正确的是( )A. 字节输入流B. 字符输入流//没什么说的,记住吧C. 打印流D. 序列化流4.下列关键字能和try一起使用的有( )A. finalB. finalizeC. finallyD. catch5.具有readLine()方法的类是( )A.B. InputStreamReaderC.D. BufferedReader // readLine()方法是缓冲流BufferedReader的特有方法6.关于newLine()方法描述错误的是( )A. newLine()方法写入换行B. newLine()方法会根据不同操作系统自动选择使用相应的换行符C. newLine()方法是类的方法D. newLine()方法是BufferedWriter类的方法// 这个也是特有方法.7.实现下列哪个接口,可以启用序列化功能( )A. Runnable接口B. Comparable接口C. Serializable接口// 这个记住吧D. Comparator接口8.以下关于java异常说法不正确的是()。

JavaIO:读写zip文件

JavaIO:读写zip文件

JavaIO:读写zip⽂件ZipInputStream是⼀种FilterInputStream,它可以直接读取zip包的内容:读取zip包ZipInputStream的基本⽤法我们要创建⼀个ZipInputStream,通常是传⼊⼀个FileInputStream作为数据源,然后,循环调⽤getNextEntry(),直到返回null,表⽰zip流结束。

⼀个ZipEntry表⽰⼀个压缩⽂件或⽬录,如果是压缩⽂件,我们就⽤read()⽅法不断读取,直到返回-1:try (ZipInputStream zip = new ZipInputStream(new FileInputStream(...))) {ZipEntry entry = null;while ((entry = zip.getNextEntry()) != null) {String name = entry.getName();if (!entry.isDirectory()) {int n;while ((n = zip.read()) != -1) {...}}}}写⼊zip包ZipOutputStream是⼀种FilterOutputStream,它可以直接写⼊内容到zip包。

我们要先创建⼀个ZipOutputStream,通常是包装⼀个FileOutputStream,然后,每写⼊⼀个⽂件前,先调⽤putNextEntry(),然后⽤write()写⼊byte[]数据,写⼊完毕后调⽤closeEntry()结束这个⽂件的打包。

try (ZipOutputStream zip = new ZipOutputStream(new FileOutputStream(...))) {File[] files = ...for (File file : files) {zip.putNextEntry(new ZipEntry(file.getName()));zip.write(getFileDataAsBytes(file));zip.closeEntry();}}上⾯的代码没有考虑⽂件的⽬录结构。

java.io.IOException:你的主机中的软件中止了一个已建立的连接

java.io.IOException:你的主机中的软件中止了一个已建立的连接

java.io.IOException:你的主机中的软件中⽌了⼀个已建⽴的连接控制台报错如下:org.apache.catalina.connector.ClientAbortException: java.io.IOException: 你的主机中的软件中⽌了⼀个已建⽴的连接。

at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:351)at org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:776)at org.apache.catalina.connector.OutputBuffer.append(OutputBuffer.java:681)at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:386)at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:364)at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:96)at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:295)at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141)at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229)at org.springframework.util.StreamUtils.copy(StreamUtils.java:147)at org.springframework.http.converter.StringHttpMessageConverter.writeInternal(StringHttpMessageConverter.java:126)at org.springframework.http.converter.StringHttpMessageConverter.writeInternal(StringHttpMessageConverter.java:44)at org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:227)atorg.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:280) at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:181)at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:82)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:123)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)at javax.servlet.http.HttpServlet.service(HttpServlet.java:626)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:450)at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387)at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)at .NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)at .SocketProcessorBase.run(SocketProcessorBase.java:49)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at ng.Thread.run(Thread.java:748)报错原因:使⽤ajax时,form表单提交按钮就没必要设置为submit类型,使⽤普通的button类型就⾏了,否则会出现以上错误信息问题原因:button>在Internet Explorer 的默认类型是 "button",⽽其他浏览器中(包括 W3C 规范)的默认值是 "submit"。

Java自学第10期——File类与IO流(输入输出流、处理流、转换流、缓冲流、Prope。。。

Java自学第10期——File类与IO流(输入输出流、处理流、转换流、缓冲流、Prope。。。

Java⾃学第10期——File类与IO流(输⼊输出流、处理流、转换流、缓冲流、Prope。

1、IO简介IO(输⼊输出)通过java.io包下的类和接⼝来⽀持,包下包括输⼊、输出两种IO流,每种输⼊输出流⼜可分为字符流和字节流两⼤类。

2、File类File类是io包下与平台⽆关的⽂件和⽬录,File能新建、删除、重命名⽂件和⽬录,不能访问⽂件本⾝,后者需要使⽤输⼊输⼊流。

2.1 构造⽅法File类的构造⽅法:File(File parent, String child) 参数:⽗路径,⼦路径根据 parent 抽象路径名和 child 路径名字符串创建⼀个新 File 实例。

File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建⼀个新 File 实例。

File(String parent, String child)根据 parent 路径名字符串和 child 路径名字符串创建⼀个新 File 实例。

File(URI uri)通过将给定的 file: URI 转换为⼀个抽象路径名来创建⼀个新的 File 实例。

2.2 静态⽅法File类静态⽅法:static String pathSeparator()与系统有关的路径分隔符,为了⽅便,它被表⽰为⼀个字符串。

static char pathSeparatorChar()与系统有关的路径分隔符。

static String separator()与系统有关的默认名称分隔符,为了⽅便,它被表⽰为⼀个字符串。

static char separatorChar()与系统有关的默认名称分隔符。

2.3 常⽤⽅法:2.3.1 获取相关public String getAbsolutePath()返回此File的绝对路径名字符串。

public String getPath()将此File转换为路径名字符串。

public String getName()返回由此File表⽰的⽂件或⽬录的名称。

Java.io.File中的delete()方法和deleteOnExit()方法的区别

Java.io.File中的delete()⽅法和deleteOnExit()⽅法的区别1.delete()⽅法:当调⽤delete()⽅法时,直接删除⽂件,不管该⽂件是否存在,⼀经调⽤⽴即执⾏;2.deleteOnExit()⽅法:当调⽤deleteOnExit()⽅法时,只是相当于对deleteOnExit()作⼀个声明,当程序运⾏结束,JVM终⽌时才真正调⽤deleteOnExit()⽅法实现删除操作。

即该⽅法是将删除的命令缓存了⼀下,到服务停⽌的时候再进⾏操作!⽰例:@Testpublic void test() throws IOException{File file=new File("E:"+File.separator+"filetest"+File.separatorChar+"HelloFile.txt");if(file.exists()){file.deleteOnExit();file.createNewFile();}else{("不存在该⽂件");}}测试结果:在相应的位置HelloFile.txt 不存在(被删除掉了);因为此处的deleteOnExit()是在JVM退出的时候才执⾏的,因此相当于是先调⽤了createNewFile()再调⽤deleteOnExit();@Testpublic void test() throws IOException{File file=new File("E:"+File.separator+"filetest"+File.separatorChar+"HelloFile.txt");if(file.exists()){file.delete();file.createNewFile();}else{("不存在该⽂件");}}测试结果:在相应的位置HelloFile.txt 仍存在(被删除掉后⼜建⽴⼀个新的该⽂件);因为此处先调⽤了delete()再调⽤createNewFile()。

java.io.IOException:Streamclosed解决办法

java.io.IOException:Streamclosed解决办法1.出现这个bug的⼤体逻辑代码如下:1private static void findMovieId() throws Exception {2 File resultFile = new File("C:\\2016.txt");34 OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(resultFile));5 BufferedWriter bufferWriter = new BufferedWriter(outputStreamWriter);67 outputStreamWriter.close();8 bufferWriter.close();9 }2.报错⼤体信息如下:3.解决⽅式:原因:bufferwriter流使⽤了outputStreamWriter流,所以关闭bufferwriter流也会关闭outputStreamWriter流;但是下⾯有使⽤outputStreamWriter 流,相当于使⽤⼀个关闭了的流。

解决办法是换下位置就可以了.代码改为:private static void findMovieId() throws Exception {File resultFile = new File("C:\\2016.txt");OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(resultFile));BufferedWriter bufferWriter = new BufferedWriter(outputStreamWriter);bufferWriter.close();outputStreamWriter.close();}同理:FileWriter和BufferWriter之间的关系:FileWriter fileWriter=new FileWriter(file);BufferWriter bufferWriter=new BufferedWriter(fileWriter);这⾥关闭流要从⼤到⼩关闭,BufferWriter包装了FileWriter,BufferWriter"⼤",FileWriter"⼩"FileWriter.close();BufferWriter.close();这样的顺序就是不⾏,FileWriter流⾃⼰关闭了。

java.io.NotSerializableException错误解决方法

java.io.NotSerializableException错误解决⽅法运⾏tomcat下⾯的 ssh项⽬,启动,打开某页⾯(让session起作⽤),停⽌;再启动,有可能会报类似如下的错误:org.apache.catalina.session.StandardManager doLoad严重: IOException while loading persisted sessions: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: xxxxxxxxjava.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: xxxxxxxxorg.apache.catalina.session.StandardManager start严重: Exception loading sessions from persistent storagejava.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: xxxxxxx原因是:tomcat停⽌时,保存session资源,然后在重启服务后,会尝试恢复session。

解决办法⼀:配置tomcat在关闭的时候就不去保存session资源。

在server.xml中Context下添加如下的内容:<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="false"/>再进⾏启动停⽌等操作,报如下的类似错误:org.apache.catalina.session.PersistentManagerBase start严重: No Store configured, persistence disabled原因是添加的东东少添加了⼀点点⼉。

关于java.io.IOException:ServerreturnedHTTPrespo。。。

关于java.io.IOException:ServerreturnedHTTPrespo。

400 请求出错:由于语法格式有误,服务器⽆法理解此请求总论:这种错误应该会有很多原因,这⾥指出的是因为字符集编码的原因导致400,主要代码:向服务器发送请求传输json参数⽤的是out.write(json.getBytes())(读取的是操作系统的字符集,如果操作系统与部署项⽬的服务器不同则报错);改为out.writeChars(json);或out.write(json.getBytes(服务器编码))即可。

如下代码16⾏1//创建连接2 URL url = new URL(u);3 HttpURLConnection connection = (HttpURLConnection) url.openConnection();4 connection.setDoOutput(true);5 connection.setDoInput(true);6 connection.setRequestMethod("POST");7 connection.setRequestProperty("connection", "keep-alive");8 connection.setConnectTimeout(30000);9 connection.setReadTimeout(30000);10 connection.setUseCaches(false);11 connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");12 connection.connect();13// POST请求14 out = new DataOutputStream(connection.getOutputStream());15 String json = message.toString();16 out.writeChars(json); // 这⾏是关键我之前写的是 out.write(json.getBytes());17 System.out.println(json);18 out.flush();19// 读取响应20 reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));21 String lines;22 StringBuffer sb = new StringBuffer("");23while ((lines = reader.readLine()) != null) {24 lines = new String(lines.getBytes(), "utf-8");25 sb.append(lines);26 }27 JSONObject jsStr =JSONObject.fromObject(sb.toString());28//获取响应值,判断是否验证通过29 String code = (String) jsStr.get("code");30 String msg=(String) jsStr.get("msg");31 System.out.println("code:"+code+",msg:"+msg);32//接⼝返回验证数据是否通过33if("0".equals(code)){34 result = "success";35 } else{36 result = "fail";37 System.out.println("下发出错:错误原因为" + msg + "下发内容为:" + json);38 }39 reader.close();40// 断开连接41 connection.disconnect();42这其中也经过⼀些波折,⽐如在⾃⼰的eclipse上运⾏正常,部署到服务器上就不⾏了,json数据是⼀样的但是因为⾃⼰本地的服务器和部署项⽬的服务器编码不同,⽽产⽣这种错误。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6.1.2 目录分隔符
• 目录分隔符(Directory Separator)是用来在 路径中分割目录的,如:Windows下的’\’, Unix下的’/’等 • Java为了满足跨平台的要求定义了平台无关 的目录分隔符File.separator • 在不同的平台下File.separator有着不同的值
6.3.2 字符流与字节流的区别
• • • • 字节流是以字节为单位进行读写的 字符流是以字符为单位进行读写的 字符流采用Unicode编码 可以使用InputStreamReader和 OutputStreamWriter将字节流转换为字符流
• InputStreamReader 将一个字节流中的字节解码成 字符 InputStreamReader(InputStream in) InputStreamReader(InputStream in,String CharsetName) • OutputStreamWriter 将写入的字符编码成字节后 写入一个字节流 OutputStreamWriter(OutputStream out) OutputStreamWriter(OutputStream out,String CharsetName)
6 JAVA I/O输入输出
• • • • • • File类 RandomAccessFile类 I/O流框架体系结构 字节流与字符流 节点流的I/O操作 处理流的I/O操作
基本概念
流: 它是通过缓冲机制将数据从生产者(如键盘、磁盘文件、内存或其他设备)传送 到接受该数据的消费者(如屏幕、文件或者内存等)的这一过程的抽象。 缓冲区: 流的两端都有数据缓冲区可以暂存数据。这样接收端可以不必每时每刻都监视流 是否有数据需要接收,数据来到之后放在缓冲区内,等需要时再去读取。而发 送端也不必每一个字节都调用发送方法,而是等集中了一定数量的数据后再一 起发送,大大提高了效率。
与I/O相关的类
随机文件操作
RandomAccessFile InputStream Object Reader
OutputStream File
文件特征与管理
Writer
6.1 File类
• 一个File类的对象表示一个文件,这个文件可 能是实际存在的,也可能是不存在的 • File类不仅可以代表文件,而且可以代表目录
6.1.4 File类的方法
• boolean mkdir() 建立一个新目录,通过返回值确定调用是 否成功,如果对象已存在则调用失败 • String[] list() 返回File对象指定的目录之下的所有文件 的文件名列表,如果File对象不是目录则返回 null • String getPath() 返回文件的相对路径,即相对当前目录的 路径,即使对象代表的文件不存在
6.3 I/O框架的体系结构
I/O流
字节流
字符流
InputStream
OutputStream
Reader
Writer
字节 byte 字符 double byte
6.3.1 I/O框架的体系结构
• 用于输入的字节流类都从InputStream继承而 来 • 用于输出的字节流类都从OutputStream继承 而来 • 用于输入的字符流类都从Reader继承而来 • 用于输出的字符流类都从Writer继承而来 • 上述类都是抽象超类
6.3.3 I/O框架的体系结构
• 按照功能(处理位置)流类可分为两种: • 节点流(Node Stream) 节点流是最基本的流,可以单独使用,直 接提供输入输出动能,不同的节点流用于从不 同的地点进行输入输出 • 处理流(ocessing Stream) 处理流是高级的流,不能单独使用,只能 同节点流配合使用,用于增强流的功能
File myFile = new File("C:" + File.separator + "jdk1.5.0" + File.separator, "File.java");
6.1.3 File类的方法
• boolean createNewFile() throws IOException 如果文件不存在创建一个新文件,通过返 回值确定调用是否成功,如果文件存在则失败 • boolean exists() 判断文件是否已经存在,文件存在返回 true,否则返回false • boolean delete() 删除文件,通过返回值确定调用是否成功
6.2 RandomAccessFile类
• 使用RandomAccessFile既可以读文件,也可 以写文件 • 可以在创建时使用参数来设置文件的读写权限 • RandomAccessFile有一个文件指示器,可以 移动到任意位置对文件进行读写
6.2.1 RadomAccessFile类
• RandomAccessFile() • RandomAccessFile(File file,String mode) throws FileNotFoundException • RandomAccessFile(String name,String mode) throws FileNotFoundException • mode:r,rw
6.4.2 节点流
• 创建输出流 FileOutputStream(File file) throws FileNotFoundException FileOutputStream(File file, boolean append) throws FileNotFoundException FileOutputStream(FileDescriptor fdObj) throws FileNotFoundException FileOutputStream(String name) throws FileNotFoundException FileOutputStream(String name, boolean append) throws FileNotFoundException
6.4.1 节点流
• 读取数据 int read () throws IOException int read (byte[] b) throws IOException int read (byte[] b, int off, int len) throws IOException • 关闭流 close() throws IOException 使用流后必须要进行关闭操作
数据发送端 (生产者)
数据接收端 (消费者)
流的数据传送
缓冲区
缓冲区
目的: 为用户提供与设备无关的输入输出。 Java I/O包: 在Java.io包中包括有许多类,它们为用户提供许 多有关文件的各个方面操作。 实现的机制: 采用面向对象的文件读写方式来操作文件,即将 所要读写的文件数据转化为相应的流类的对象,然后 通过流对象操作其方法。
File f=new File("e:\\1.txt"); try { f.createNewFile(); } catch(Exception e) { System.out.println(e.getMessage()); } System.out.println("File name:"+f.getName()); System.out.println("File path:"+f.getPath()); System.out.println(f.exists()?"exists":"dose not exists");
System.out.println(myFile.getName());//取得文件名称的方法 System.out.println(myFile.getPath());//取得文件路径的方法 System.out.println(myFile.isAbsolute());//判断文件是否完整 System.out.println(myFile.getParent());//取得文件的根目录 System.out.println(myFile.exists());//判断文件是否存在 System.out.println(myFile.isDirectory());//判断是否是目录 System.out.println(myFile.isFile());//判断是否是文件 System.out.println(myFile.isHidden());//判断是否是隐藏文件 System.out.println(myFile.canRead());//判断是否可读 System.out.println(myFile.canWrite());//判断是否可写
• 可以通过调用exists()方法判断File对象代表 的文件是否实际存在
6.1.1 File类的构造方法
• File (String fileName)
• File(String dir, String fileName) • File(File dir, String fileName)
• 注意:File类没有缺省构造方法
6.1.5 File类的方法
• String getAbsolutePath() 返回文件对象的绝对路径,即使对象代表 的文件不存在 • String getParent() 返回文件所在目录的名字 • String getName() 返回文件名
6.1.6 File类的方法
• boolean canRead() 判断文件是否可被读取 • boolean canWrite() 判断文件是否可以写入 • long lastModified() 返回一个表示文件最后修改时间的长整数, 这个数表示从1970年1月1日0时开始流逝的毫 秒数,如果文件不存在则返回0
相关文档
最新文档