字节流转字符流OutputStreamWriter、InputStreamReader,关闭流的方法
转换时可以指定编码格式:GBK、UTF-8
public class Demo { public static void main(String[] args) { File f = new File("word.txt"); FileOutputStream out = null;//字节流 OutputStreamWriter osw = null;//字节流转字符流 BufferedWriter bw = null;//缓冲字符流 try { out = new FileOutputStream(f); osw = new OutputStreamWriter(out, "GBK");//字节流转字符流,编码格式GBK bw = new BufferedWriter(osw); bw.write("夕西行"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally {//注意关闭顺序,由后至前 if (bw != null) { try { bw.close(); } catch (IOException e) { e.printStackTrace(); } } if (osw != null) { try { osw.close(); } catch (IOException e) { e.printStackTrace(); } } if (out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } FileInputStream in = null;//字节流 InputStreamReader isr = null;//字节流转字符流 BufferedReader br = null;//缓冲字符流 try { in = new FileInputStream(f); isr = new InputStreamReader(in, "GBK"); br = new BufferedReader(isr); System.out.println(br.readLine()); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (br != null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } if (isr != null) { try { isr.close(); } catch (IOException e) { e.printStackTrace(); } } if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
关闭流的另外一种方法(推荐)。在try的()中写入代码,try-catch结束,流自动关闭
public class Demo { public static void main(String[] args) { File f = new File("word.txt"); //在try的()中写入代码,try-catch结束,流自动关闭 try (FileOutputStream out = new FileOutputStream(f); OutputStreamWriter osw = new OutputStreamWriter(out, "GBK"); BufferedWriter bw = new BufferedWriter(osw);) { bw.write("夕西行"); } catch (IOException e) { e.printStackTrace(); } FileInputStream in = null;//字节流 InputStreamReader isr = null;//字节流转字符流 BufferedReader br = null;//缓冲字符流 try { in = new FileInputStream(f); isr = new InputStreamReader(in, "GBK"); br = new BufferedReader(isr); System.out.println(br.readLine()); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (br != null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } if (isr != null) { try { isr.close(); } catch (IOException e) { e.printStackTrace(); } } if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
分类:
Java基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!