当前位置: 首页 > news >正文

6.Java高级编程 输入和输出处理一

Java高级编程 输入和输出处理一

文章目录

  • Java高级编程 输入和输出处理一
      • 一、File文件操作
        • File类的常用方法
      • 二、流的分类与使用
          • **字节流:**byte
          • **字符流:**char(String)
      • 三、代码演示
      • 四、序列化与反序列化

一、File文件操作

File类的常用方法
方法名称说明
boolean exists( )判断文件或目录是否存在
boolean isFile( )判断是否是文件
boolean isDirectory( )判断是否是目录
String getPath( )返回此对象表示的文件的相对路径名
String getAbsolutePath( )返回此对象表示的文件的绝对路径名
String getName( )返回此对象表示的文件或目录的名称
boolean delete( )删除此对象指定的文件或目录
boolean createNewFile( )创建名称的空文件,不创建文件夹
long length()返回文件的长度,单位为字节**,** 如果文件不存在,则返回 0L
//绝对路径   相对路径File file  = new File("1.text");System.out.println("判断文件或目录是否存在:"+file.exists());System.out.println("判断是否是文件:"+file.isFile());System.out.println("判断是否是目录"+file.isDirectory());System.out.println("获得相对路径:"+file.getPath());System.out.println("获得绝对路径:"+file.getAbsolutePath());System.out.println("获得文件或目录名称:"+file.getName());System.out.println("获得文件长度,字节数"+file.length());System.out.println("删除文件或目录"+file.delete());/** 1B字节 = 8bit(位)* 1KB千字节 = 1024B*/String path = "D:\\4021/001";String name = "1.txt";try {File file1 = new File(path);if(!file1.exists()&&!file1.isDirectory()) {//进来创建System.out.println("创建目录");file1.mkdirs();//创建多级目录   file1.mkdir();创建文件夹||或目录}File file2 = new File(path,name);if(!file2.exists()&&file2.isFile()) {//进来创建boolean b = file2.createNewFile();//创建文件}} catch (Exception e) {e.printStackTrace();}

二、流的分类与使用

Java流的分类

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

**字节流:**byte

​ **输入流:**input(读取)

InputStream->(子类为)FileInputStream(路径)

​ .available():获得文件字节数量

​ .read(字节数组)||.read() 读取文件

​ is.close;//关闭流 释放资源

​ **输出流:**Output(写入)

​ OutputStream->FilOutputStream(“路径”,boolean 是否追加)

​ os.write(字符串.get.Bytes(“utf-8”));写入内容 将字符串转换为字节数组 并释放资源

​ os.close();//释放资源

​ os.flush(); 强制把缓冲区的数据写到输出流中

**字符流:**char(String)

​ 输入流:Reader

Reader->InputStreamReader(字节流InputStream,编码)->FileReader(路径)

​ 解决乱码问题 Reader a = new InputStreamReader(new FileInputStream(路径),“utf-8”);

​ 缓冲区 BufferedReader(Reader)

​ br.readLine();

​ 输出流:Writer

Writer->OutputStreamWriter(字节流OutputStream,编码)->FileWriter(路径||file对象)

​ 方法:

​ write(字符串)写入内容

​ flush()将缓冲区中的数据 刷新到文件中

​ close()释放资源

​ 缓冲区BufferedWriter(Writer)

​ append(字符)写入内容

​ write(字符串)写入内容

​ flush() 将缓冲区中的数据 刷新到文件中

​ close()释放资源

​ bw.newLine();另起一行

三、代码演示

/*** 输入流    input   读取文件内容  文件->代码    字节流* @author 26255**/
public class Text04 {public static void main(String[] args) {InputStream is = null;try {//创建流is = new FileInputStream("2.txt");//创建字节数组  用于储存文件信息byte b[] = new byte[is.available()];is.read(b);   //读取文件内容//将字节数组 转换为字符串String str  = new String(b,"utf-8");System.out.println(str);} catch (Exception e) {e.printStackTrace();}finally {try {if(is!=null)is.close();//关闭流 释放资源} catch (Exception e) {e.printStackTrace();}}
/*** 输出流  output 写入       代码->文件   字节流* @author 26255**/
public class Text05 {public static void main(String[] args) {try {//创建流OutputStream os = new FileOutputStream("2.txt",true);os.write("zhisha".getBytes("utf-8"));os.close();//释放资源}catch(Exception e){e.printStackTrace();}
/*** 读取文件内容   输入流   字符流* @author 26255**/
public class Text06 {public static void main(String[] args) {try {//Reader reader = new FileReader("2.txt");//解决中文乱码问题Reader reader  =new InputStreamReader(new FileInputStream("2.txt"),"uft-8");//字符数组char c[] = new char[100];reader.read(c);//将数组转换为字符串String msg = new String(c);System.out.println(msg);} catch (Exception e) {e.printStackTrace();}}
}/*** 读取文件内容    输入流    缓冲区* @author 26255**/
public class Text07 {public static void main(String[] args) {try {//Reader reader = new FileReader("2.txt");//解决中文乱码问题Reader reader = new InputStreamReader(new FileInputStream("2.txt"),"utf-8");//创建缓冲区BufferedReader rb = new BufferedReader(reader);String line = null;while((line=rb.readLine())!=null) {System.out.println(line);}rb.close();reader.close();//结束} catch (Exception e) {e.printStackTrace();}}}
/*** 输出流   写入     字符流* @author 26255**/
public class Text08 {public static void main(String[] args) {try {//Writer writer = new FileWriter("2.txt");//解决乱码Writer writer = new OutputStreamWriter(new FileOutputStream("2.txt",true),"uft-8");writer.write("赔过钱");//writer.append("");System.out.println("写入成功!!!");writer.close();} catch (Exception e) {e.printStackTrace();}}}/*** 输出流    写入    字符流      缓冲区   * @author 26255**/
public class Text09 {public static void main(String[] args) {try {//Writer writer = new FileWriter("2.txt");//解决乱码Writer writer = new OutputStreamWriter(new FileOutputStream("2.txt",true),"uft-8");//创建缓冲区BufferedWriter bw = new BufferedWriter(writer);bw.newLine();//另起一行bw.append("田楷波");//将缓冲区中的数据  刷新到文件中bw.flush();System.out.println("写入成功!!");//释放资源bw.close();writer.close();} catch (Exception e) {e.printStackTrace();}}}

四、序列化与反序列化

序列化:内存对象->文件 写入文件

​ ObjectOutputStream(OutStream字节流)

​ WriteObject(对象)

反序列化:文件->内存对象 读取文件

​ ObjectInputStream(InputStream字节流)

​ readObject()返回对象

注意:序列化对象要实现接口java.io.Serializable

/*** 序列化  写入* 反序列化  读取* @param args*/public static void main(String[] args) {OutputStream os = null;ObjectOutputStream oos = null;InputStream is = null;ObjectInputStream ois = null;try {//创建字节流对象os = new FileOutputStream("D:\\xiangmueclipse\\expertch07\\src\\com\\hz\\ch04\\wwa.txt");//创建序列化对象oos = new ObjectOutputStream(os);List<Dog> list = new ArrayList<Dog>();//让对象 可序列化list.add(new Dog("张三","飒飒的萨摩亚"));//让对象 可序列化list.add(new Dog("张x","xxxxx"));oos.writeObject(list);//创建字节流对象is = new FileInputStream("3.txt");//创建反序列化对象ois = new ObjectInputStream(is);//读取//Dog d = (Dog)ois.readObject();//读取//System.out.println(d.toString());List<Dog> dogs = (List<Dog>) ois.readObject();for(Dog d:dogs) {System.out.println(d.toString());}} catch (Exception e) {e.printStackTrace();}finally {try {os.close();ois.close();is.close();} catch (IOException e) {e.printStackTrace();}}}}

ystem.out.println(d.toString());
List dogs = (List) ois.readObject();
for(Dog d:dogs) {
System.out.println(d.toString());
}

	} catch (Exception e) {e.printStackTrace();}finally {try {os.close();ois.close();is.close();} catch (IOException e) {e.printStackTrace();}}}

}



http://www.mrgr.cn/news/29369.html

相关文章:

  • 魅思-视频管理系统 getOrderStatus SQL注入漏洞复现
  • 【系统架构设计师】软件架构的风格(经典习题)
  • 5.内容创作的未来:ChatGPT如何辅助写作(5/10)
  • FreeRTOS单多核调度
  • Shell脚本编程基础(二)
  • 【Linux】Linux的基本指令(1)
  • 国外问卷调查怎么做的,新手怎么开始?
  • 分布式光伏发电站数据采集设备管理硬件解决方案
  • 搭建一个基于角色的权限验证框架
  • Qt快捷键说明与用法
  • 【大模型技术教程】FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统
  • 网络安全中GET和POST区别在哪?
  • 虚拟私有云VPC详解和设置方法
  • 抖音生活服务常见玩法及收益情况详解!普通人如何把握机会?
  • Prometheus监控k8s环境构建
  • 图像超分辨率技术代码分享
  • 第14章 存储器的保护
  • 直流电源纹波噪声的测量
  • 基于yolov8的舌苔识别检测系统python源码+onnx模型+评估指标曲线+精美GUI界面
  • 阳光乳业业绩下滑:核心业务承压显著,区域之困如何突围?