首页 > 其他分享 >OutputStream详解

OutputStream详解

时间:2022-10-11 18:00:34浏览次数:49  
标签:fs 字节 write OutputStream FileOutputStream byte 详解 String

我们都知道流分为 字节流和字符流

 输出流又分:字节输出流,字符输出流

 输入流又分:字节输入流,字符输入流

/*在java中OutputStream表示字节输出流,可以将java程序中的数据写到文件中。
OutputStream是所有字节输出流的顶层父类,是一个抽象类,如果要用,需要使用子类。
常用的子类FileOutputStream
构造方法:
FileOutputStream(File file): 传递File类型的文件。
FileOutputStream(String name): 传递一个字符串类型的文件路径。
常用方法:
void write(int b): 向文件中写入一个字节。
void write(byte[] b): 向文件中写入一个字节数组。
void write(byte[] b, int off, int len): 向文件中写入字节输入的一部分。
void close(): 释放资源.
FileOutputStream的使用步骤
1. 创建一个FileOutputStream对象,并且指定一个目的地文件
2. 调用write方法,向文件中写入数据。
3. 释放资源(关闭流)
注意: 在java中,一个字符占两个字节,但是如果这个字符在ASCII码范围内
,那么这个字符在计算机
中是占一个字节的,可以以一次写一个字节的方式写入到文件中.
中文在操作系统中占多个字节的。 如果文件采用的是GBK编码,那么这个中文就占2个字节。
如果文件采用的是UTF-8编码,那么这个中文占3个字节。
*/
public class Demo02OutputStream {
public static void main(String[] args) throws IOException {
byte arr[] = new byte[]{12, 13, 13, 45};
//创建一个FileOutputStream对象,并且指定一个目的文件
FileOutputStream fs = new FileOutputStream("file01.text");
//调用write方法,向文件中写入数据
//写入byte【】类型
fs.write(arr);
//写入BYTE【】类型,从几号开始到几号索引结束
fs.write(arr, 1, arr.length - 1);
// System.out.println(fs);
//如果不释放资源,那么如果这个程序不结束的话,这个资源会一直处于被占用的状态.
//3. 释放资源(关闭流)
fs.close();

}
}
/*
字符串和字节输出的相互转换。
字符串->字节数组
byte[] getBytes(): 使用平台默认的编码方式将字符串转成字节数组。
字节数组 -> 字符串
String(byte[] bytes): 将字节数组转成一个字符串
String(byte[] bytes, int offset, int length): 将字节数组的一部分转成String。
参数bytes: 表示要转换的字节数组
参数offset: 表示从哪个位置开始转
参数length: 表示转几个.
*/
public class Demo03Parse {
public static void main(String[] args) {
//定义一个字符串
String s="abcde";
//调用方法把这个字符串转换为字节数组
byte[] arr=s.getBytes();
System.out.println(Arrays.toString(arr));

String s1="java爱好者";
byte[]arr1=s1.getBytes();
System.out.println(Arrays.toString(arr1));//从打印结果可以看到文字占了三个字节

System.out.println("---------------------");

//字节数组转换为字符串

String str1=new String(arr);
System.out.println("str1:"+str1);

String str2=new String(arr,1,arr.length-2);
System.out.println(str2);
}
}
/*
使用字节输出流向文件中一次写一个字节数组
方法:
void write(byte[] b): 向文件中写入一个字节数组。
void write(byte[] b, int off, int len): 向文件中写入字节输入的一部分。
*/
public class Demo04OutputStream {
public static void main(String[] args) throws IOException {
//创建FileOutputStream对象,并指定目标文件
FileOutputStream fs=new FileOutputStream("java265.txt");
//使用字节输出流向文件写一个字节数组
//创建一个字符串,转字节数组
String s="abcde";
byte[] b = s.getBytes();
//把字节数组输出到指定文件
// fs.write(b);
//向文件中写入字节输出的一部分
fs.write(b,0,b.length-1);
//关闭流
fs.close();
}
/*
如果想要在原来文件的后面进行续写,可以使用另外的构造方法创建对象。
FileOutputStream(File file, boolean append): 第二个参数append表示是否要续写。
true表示续写。
FileOutputStream(String name, boolean append): 第二个参数append表示是否要续写。
true表示续写。
*/
public class Demo05OutputStream {
public static void main(String[] args) throws IOException {
FileOutputStream fs = new FileOutputStream("fiel02.text", true);
//字符串转字节数组
fs.write("我是java265".getBytes());
//释放资源
fs.close();
}
}
/*
换行写
如果要实现换行,可以使用换行符。
每个操作系统的换行符都不一样。
windows: \r\n
linux: \n
mac: \r
*/
public class Demo06WriteLine {
public static void main(String[] args) throws IOException {
FileOutputStream fs = new FileOutputStream("fiel03", true);
fs.write("我是一个java爱好者\r\n".getBytes());
fs.write("我来自java265\r\n".getBytes());
fs.write("\r\n\r\njava265.com".getBytes());
fs.close();
}
}

 

标签:fs,字节,write,OutputStream,FileOutputStream,byte,详解,String
From: https://blog.51cto.com/u_15736642/5747584

相关文章

  • 定时任务cron表达式详解
    定时任务cron表达式详解 参考自:https://blog.csdn.net/fanrenxiang/article/details/80361582一cron表达式顺序秒分时日期月份星期年(可选)取值0-......
  • va_start和va_end使用详解
    本文主要介绍va_start和va_end的使用及原理。在以前的一篇帖子FormatMessageBox详解中曾使用到va_start和va_end这两个宏,但对它们也只是泛泛的了解。介绍这两个......
  • 范式概述和三大范式详解
    范式概述概念:设计数据库时,需要遵循的一些规范。要遵循后边的范式要求,必须先遵循前边的所有范式要求,设计关系数据库时,尊从不同的规范要去,射击诸合理的关系型数据库,这些不......
  • java Spring Cloud 全环境 简明快速 精准 详解 视频课程 -专题视频课程
    Maven下SpringCloud全环境—10645人已学习课程介绍        本课程介绍SpringCloud+maven+Eureka+zuul+微服务+客户端+feign+hystrix+ribbon+config负载均衡......
  • java 中级进阶高级 java 23种设计模式 视频教程 详细介绍+代码详解 +应用场景分析+
    ​​​​java中级进阶高级23种设计模式详细介绍+代码详解2019-04-06日最新更新蒋浩宇技术总监/CTO/高级工程师/技术专家主要讲解关于java、python、c++、前段、html5、jq......
  • 2.5W字详解 | 专门为 “数据分析师” 写的 “MySQL优化” 问题,真的好懂多了!
    目录  ​​1、MySQL的基本架构​​​   ​​1)MySQL的基础架构图​​   ​​2)查询数据库的引擎​​​   ​​3)指定数据库对象的存储引擎​​​  ​​2、SQL......
  • 带你学MySQL系列 | MySQL数据类型详解
    1.简要概述为什么要开通MySQL这个学习板块呢?因为这是一名数据分析师必要的一项技能。分析数据什么最重要?当然是数据,既然如此!在数据呈现爆发式增长的年代,怎么能够不学学数据......
  • 范式概述和三大范式详解
    范式概述数据库设计的范式概念:设计数据库时,需要遵循的一些规范。要遵循后边的范式要求,必须先遵循前边的所有范式要求设计数据库时,遵从不同的规范要求,设计出合理......
  • jdbc元数据DataBaseMetaData查询数据库表信息详解
    一.得到这个对象的实例Connectioncon;con=DriverManager.getConnection(url,userName,password);DatabaseMetaDatadbmd=con.getMetaData();二.方法getTables的......
  • HTTP 与HTTPS详解
    超文本传输协议HTTP:  一.  HTTP协议主要特点:  客户端——服务器模式,客户端发送请求到服务器,服务器返回响应给客户端即完成了一次http请求。  简单快速,ht......