java byte[] 文件流 转换成string是乱码_Java学习--IO(二)、多线程

536ef74e603c60f81115f3a6c4cd7982.png

1.标准输入流

标准输入流是指从标准输入设备流向程序的数据。

Java利用http://System.in来得到一个InputStream字节输入流

public static void main(String[] args) throws IOException {// 需求:输入一句话,然原样输出InputStream in = System.in;byte[] buf = new byte[1024];int len;// buf中包含回车和换行len = in.read(buf);String str = new String(buf, 0, len);// System.out.println(Arrays.toString(buf));System.out.println(str);}

注意:从控制台输入的字符,将会以默认编码编码成字节,进而进入输入流。同时,从控制台输入的字节将会包含换行及回车的编码。

从控制台高效读取一首诗,并将这首诗写入文件中

public static void main(String[] args) throws IOException {// 需求:从控制台高效读取一行数据。把一首诗写入文件。InputStream in = System.in;InputStreamReader reader = new InputStreamReader(in, "GBK");BufferedReader br = new BufferedReader(reader);File file = new File("d:javatestk.txt");FileWriter writer = new FileWriter(file);BufferedWriter bw = new BufferedWriter(writer);String end = "bye";while(true) {String line = br.readLine();if(line.equals(end)) {break;}bw.write(line);// bw.newLine();}bw.flush();bw.close();writer.close();}

2.标准输出流(PrintStream)

标准输出流是流向标准输出设备(显示器)的数据。

Java中用System.out得到PrintStream字节输出流(字节打印流)。

含:

print

println方法

public static void main(String[] args) throws IOException {File file = new File("d:javatestk.txt");FileReader reader = new FileReader(file);BufferedReader br = new BufferedReader(reader);PrintStream ps = System.out;String line;while( (line=br.readLine())!=null ) {ps.println(line);}}

注意:PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节

public static void main(String[] args) throws IOException {String str = "hello中国";byte[] buf = str.getBytes("utf-8");PrintStream ps = System.out;ps.write(buf);}

以上将会发生乱码。

3.字符打印流PrintWriter

实现了PrintStream中所有的方法,同样是标准输出流是流向标准输出设备(显示器)的数据。但是是输出格式化的表示形式。

此类方法不会抛出IO异常。

此方法可以按照一定的格式化写入到我们的文档当中。

public static void main(String[] args) throws IOException {File file = new File("g:javatesta.txt");PrintWriter pw = new PrintWriter(file);Date date = new Date(0);pw.format("%tA", date);pw.flush();pw.close();}

这里给出一些常用日期格式化转换符如下:

4559dd0263f975bc3b9b337184eab1ba.png

4.Scanner类

用于扫描文件、控制台、字节流等等。

public static void main(String[] args) throws IOException {// 扫描平台默认编码的文件/*File file = new File("d:javatestj.txt");Scanner sc = new Scanner(file);*/// 扫描指定编码的文件Scanner sc = new Scanner(new FileInputStream(new File("d:javatestj-utf8.txt")), "UTF-8");String line;while (sc.hasNextLine()) {line = sc.nextLine();System.out.println(line);}}

5.序列化

把内存中的对象永久保存到硬盘的过程称为对象序列化,也叫做持久化。

把硬盘持久化的内存恢复的内存的过程称为对象反序列化。

5.1 Serializable

Serializable接口没有方法或字段,仅用于标识可序列化的语义,类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化,并抛出异常。

5.1.1序列化对象

ObjectOutputStream 继承于OutputStream,专门用于把对象序列化到本地。

public static void main(String[] args) throws IOException {Student stu = new Student("001", "大狗", 20, Gender.男);/***	方案1:取stu所有的属性,通过特定的字符串(-),把各个属性值连接起来*  001-大狗-20-男*/File file = new File("d:javatestl.txt");FileOutputStream out = new FileOutputStream(file);ObjectOutputStream oos = new ObjectOutputStream(out);oos.writeObject(stu);oos.close();out.close();}

5.1.2反序列化对象

ObjectInputStream 继承于InputStream ,专门用于把本地持久化内容反序列化到内存。

public static void main(String[] args) throws IOException, ClassNotFoundException {File file = new File("d:javatestl.txt");FileInputStream in = new FileInputStream(file);ObjectInputStream ois = new ObjectInputStream(in);Student student = (Student) ois.readObject();System.out.println(student.getId());System.out.println(student.getName());System.out.println(student.getAge());System.out.println(student.getGender());ois.close();in.close();}

5.2 transient关键字

开发过程中,如果想忽略某些字段不让其序列化时,可以使用transient修饰。

public class Student implements Serializable {private static final long serialVersionUID = 7222966748321328300L;private String id;private transient String name;private transient int age;private Gender gender;private String phone;

6. DataInputStream / DataOutputStream

这两者分别继承于InputStream与OutputStream。特别的是他们很适合读取/写入在网络传输过程中的数据流。

public static void main(String[] args) throws IOException {File file = new File("d:javatestn.txt");FileOutputStream out= new FileOutputStream(file);DataOutputStream dos = new DataOutputStream(out);dos.writeInt(10);dos.writeUTF("hello中国");dos.close();out.close();System.out.println("写入完成");}
public static void main(String[] args) throws IOException {File file = new File("d:javatestn.txt");FileInputStream in = new FileInputStream(file);DataInputStream dis = new DataInputStream(in);int a = dis.readInt();String str = dis.readUTF();System.out.println(a);System.out.println(str);}

e1f08cbd484112a6cde5988e5cfd90b3.png

7.多线程

7.1程序与进程

在计算机刚出现时,计算机的效率是十分低下的,尤其是对CPU的利用率,当一个程序运行时,将会产生一段进程,计算机需把该进程全部完成,才能让下一段程序进入,这样将会对效率产生极大的影响。

对于当今电脑来讲,已经不存在着这样的问题了,因为电脑引入了进程与多线程的概念,使得在宏观上表现出了cpu在同时处理多个程序,但在微观上,即实际上,cpu每次都只能运行一个程序。由于速度较快,人类感受不到这之间的差距。较为明显的感受即是,电脑发生卡顿。此时说明有一个程序正在CPU中运行,且无法被移出或短时间内无法移出。

7.2进程与线程的区别

999fe60e6bbccbcc2b5e1149343260ce.png

7.3实现多线程

第一种:

public class MyThread extends Thread {@Overridepublic void run() {System.out.println("我是多线程MyThread");for (int i = 0; i < 5; i++) {System.out.println("MyThread:" + i);}}
}public class Test01 {public static void main(String[] args) {// main开始运行产生一个进程,该进程默认有个主(main)线程// 创建线程MyThread t1 = new MyThread();// 启动线程t1.start();for (int i = 0; i < 5; i++) {System.out.println("main Thread:" + i);}}

第二种:

public class MyRun implements Runnable {@Overridepublic void run() {System.out.println("我是MyRun");for (int i = 0; i < 5; i++) {System.out.println("my run:" + i);}}
}public class Test02 {public static void main(String[] args) {MyRun run = new MyRun();Thread t1 = new Thread(run);t1.start();// main开始运行产生一个进程,该进程默认有个主(main)线程for (int i = 0; i < 5; i++) {System.out.println("main Thread:" + i);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML字体小于12谷歌不兼容,Chrome谷歌浏览器下不支持css字体小于12px的解决办法...

coder.png在这一年的工作中&#xff0c;我发现很多问题你利用自己的「聪明才智」绕过去了&#xff0c;总有一天它会和你不期而遇&#xff0c;今天我们就来直面一个字体兼容性的小问题&#xff1a;Chrome谷歌浏览器下不支持css字体小于12px。我们先来看个效果图(chrome下)&#…

为什么同大取大同小取小_不锈钢马大型动物雕塑-大同金属雕塑马订制

不锈钢马大型动物雕塑-大同金属雕塑马订制 不锈钢浮雕雕塑所谓不锈钢浮雕雕塑是雕塑与绘画结合的产物&#xff0c;用压缩的办法来处理对象&#xff0c;靠等因素来表现三维空间&#xff0c;并只供一面或两面观看。浮雕一般是在另一平面上的&#xff0c;因此在建筑上使用更多&…

html5之api,HTML5之API(示例代码)

HTML5就是牛&#xff0c;可以直接播放音视频&#xff0c;还可以作图&#xff1b;一、HTML5中播放视频和音频&#xff1a;加载时直接播放音频的方式&#xff1a;new Audio("BY2.mp3").play();播放器视频音频var video $("#mp")[0];video.play();简单播放器…

电子计算机时代 英语,2018年英语专四作文范文:计算机时代

2018年英语专四作文范文&#xff1a;计算机时代1.近年来&#xff0c;计算机的应用越来越广泛2.计算机能做许多有益的事3.计算机也有许多副作用范文&#xff1a;In recent years, computers have grown in popularity. You can find them notonly in the universities but on fa…

济宁市机器人科技乐园_人工智能的“游乐场”,邀你免费畅玩!

原标题&#xff1a;人工智能的“游乐场”&#xff0c;邀你免费畅玩&#xff01;好奇心与荷尔蒙&#xff0c;探索欲与脑洞大开AI就像一座多种多类游乐园家、学校、公司、商场……无论在哪个地方&#xff0c;AI都在努力的创造更优越的应用场景你有没有亲身体验过AI &#xff1f;我…

cad2010多个文件并排显示_便携式显示器清晰度参数,你知道吗?

便携式显示器清晰度是十分重要的&#xff0c;那么影响便携式显示器清晰度的参数有哪些呢&#xff1f;一起跟随诚易盛小编去看看&#xff0c;感谢大家阅读&#xff01;戳这里直达上文aosiman便携式显示器 15.6英寸1、屏幕尺寸有多少人认为&#xff0c;屏幕越大就越清晰的?其实不…

xp计算机用户密码设置,XP电脑开机密码怎么设置?

电脑开机密码是在我们打开电脑后输入正确的密码后才能启动操作系统。手机上的密码我们都会设置&#xff0c;那么你们知道怎么给电脑设置开机密码呢?接下来&#xff0c;小编就教大家设置电脑开机密码&#xff0c;一起来看一下吧电脑开机密码如何设置呢&#xff1f;由于网络安全…

id 重启event_windows 2003 R2 系统自动重启了. event ID 6008

从昨天开始,自动重启,日志如下.The previous system shutdown at 7:59:13 AM on 5/25/2012 was unexpected.For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.0000: dc 07 05 00 05 00 19 00 ?......0008: 07 00 3b 00 0d …

审计利用计算机,利用计算机审计手段 提高审计工作水平

1月13日&#xff0c;中软国际举办的“利用计算机审计手段&#xff0c;提高审计工作水平”大型研讨会在北京嘉里中心酒店九龙厅如期召开&#xff0c;中软国际总裁陈宇红、副总裁王晖、唐振明出席此次研讨会&#xff0c;数十家国内媒体到会采访。本次研讨会得到国家审计署、解放军…

nodejs 防宕机_pm2实战,让你的nodejs、koa2应用永远不会宕机

为什么用&#xff1f;持久化:一旦开始使用&#xff0c;您的应用将达到持久化&#xff0c;在崩溃和机器重启时自启动。流程管理 : 您所有的应用都被守护进程日志管理 所有的应用日志都会保存到您的服务器硬盘中~/.pm2/logs/。零配置负载均衡器 pm2通过创建多个共享相同服务器端口…

计算机网络纠错码,纠错码

纠错码(error correcting code)&#xff0c;在传输过程中发生错误后能在收端自行发现或纠正的码。仅用来发现错误的码一般常称为检错码。为使一种码具有检错或纠错能力&#xff0c;须对原码字增加多余的码元&#xff0c;以扩大码字之间的差别 &#xff0c;即把原码字按某种规则…

linux top 命令可视化_Linux 使用 top 命令查看系统的运行情况

top命令显示界面top命令默认在一个特定间隔(3秒)后刷新显示。要手动刷新&#xff0c;用户可以输入回车或者空格。top - 18:32:45 up 230 days, 2:01, 1 user, load average: 0.00, 0.00, 0.00Tasks: 93 total, 1 running, 92 sleeping, 0 stopped, 0 zombieCpu(s): 0.8%us, 0.5…

远程桌面与本计算机共享文件,如何开启远程计算机共享目录

一。我们可以直接通过在客户端输入wmic命令&#xff0c;来远程开启服务器的远程桌面&#xff0c;命令如下&#xff1a;wmic/node:"[fullmachinename]"/user:"[domain]\[username]"pathwin32_terminalservicesettingwhere(__class!"")callsetallo…

对口升学考试计算机应用知识点,湖南省对口升学考试计算机应用类试题含参考答案...

机密★祁东职专湖南省2014年普通高等学校对口招生计算机应用类专业综合知识试题本试题卷共6大题&#xff0c;38小题&#xff0c;共19页&#xff0c;时量150分钟&#xff0c;满分390分一、单选题(在本题的每一小题的备选答案中&#xff0c;只有一个答案是正确的&#xff0c;本大…

python 面向对象思想汇报_小虎 2019 年第 9 周思想汇报

image2 月结束了&#xff0c;先说说月度层面的事&#xff0c;2 月大事记&#xff1a;1、休息了 10 天&#xff0c;学完了 Python 基础课&#xff1b;2、CFA 复习中断了&#xff0c;在月底捡起来了&#xff1b;3、离职加入职&#xff0c;生活出现一次大变化&#xff1b;4、运动变…

fopen_s不接受两个参数_如何利用SPC来管理制造过程,不懂SPC还敢混“质”场?

请点击上面  免费关注本账号&#xff01;必读 → 2019年4-5月开课计划(IASC-CN俱乐部)PC是汽车行业品质管理的重要工具之一&#xff0c;AIAG为此写了一整本书。这篇文章略去SPC一些基础知识的介绍&#xff0c;直接来讲一下应如何利用SPC来管理一个制造过程。I. SPC的应用范围…

台式计算机装系统,教你台式电脑重装系统方法

台式电脑重装系统对于大部分用户都会因为台式电脑重装系统一般都不需要修改设置&#xff0c;所以重装系统就不那么麻烦了&#xff0c;通常情况下大家都会使用下面教你们的第一种台式电脑重装系统方法&#xff0c;因为这种方法是傻瓜式的重装教程&#xff0c;所以小编在下文中就…

江苏师范大学计算机全国排名,国内131所二本师范大学最新排名(按录取分数线)...

每年高考录取结束后&#xff0c;“文科生可以考哪些师范大学&#xff0c;这些学校的排名怎么样”都是大家关注的热门问题&#xff0c;小编根据安徽省考试院与圆梦志愿的数据&#xff0c;整理出所有二本师范大学2020年在安徽省文科的分数线排名&#xff0c;希望能够给大家带来参…

3w最简单led灯电路图_Mixly 第19课 光感应灯——光敏电阻使用

第19课 光感应灯——光敏电阻使用光敏电阻器又叫光感电阻&#xff0c;是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器&#xff1b;入射光强&#xff0c;电阻减小&#xff0c;入射光弱&#xff0c;电阻增大。光敏电阻器一般用于光的测量、光的控制和光电…

arcgis xml 下载 切片_openlayers6结合geoserver利用WFS服务实现图层编辑功能(附源码下载)...

内容概览1.openlayers6结合geoserver利用WFS服务实现图层编辑功能2.源代码demo下载效果图如下&#xff1a;本篇主要是参照openlayers6结合geoserver利用WFS服务实现图层新增功能(附源码下载)基础上实现的&#xff0c;openlayers6通过调用geoserver发布的地图服务WFS来达到图层编…