Java 字节流
时间:2022-07-22
本文章向大家介绍Java 字节流,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
OutputStream
此抽象类是表示输出字节流的所有类的超类。输出流接受输出字节并将这些字节发送到某个接收器
FileOutputStream
实现
BufferedOutputStream
缓冲,过设置这种输出流,应用程序就可以将各个字节写入基础输出流中,而不必为每次字节写入调用基础系统。
InputStream
此抽象类是表示字节输入流的所有类的超类。
FileInputStream
用于读取诸如图像数据之类的原始字节流,要读取字符流。
BufferedInputStream
读取或跳过流中的各字节时,必要时可根据所包含的输入流再次填充该内部缓冲区,一次填充多个字节。
1.实现数据的换行? 输入n换行,在高级记事本中打开可以换行,但是在低记事本中不会 不同的系统换行符号不同,在windows下用rn 2.追加写入
FileoutputStream fos = new FileoutputStream("a.txt",true);
3.IO流复制文件第一种方法
public class copy {
public static void main(String[] args) throws IOException {
//数据源
FileInputStream fis = new FileInputStream(
new File("D:\erweima.png"));
//目的地
FileOutputStream fos = new FileOutputStream(
new File("erweima.png"));
int by = 0;
while((by=fis.read())!=-1){
fos.write(by);
}
//释放资源
fis.close();
fos.close();
}
}
4.IO流复制文件第二种方法
public class copy2 {
public static void main(String[] args) throws IOException {
//数据源
FileInputStream fis = new FileInputStream(
new File("D:\erweima.png"));
//目的地
FileOutputStream fos = new FileOutputStream(
new File("D:\JE\erweima.png"));
byte[] bs = new byte[1024];
while(fis.read(bs)!=-1){
fos.write(bs);
}
//释放资源
fis.close();
fos.close();
}
}
5.IO3
public class copy3 {
public static void main(String[] args) throws IOException {
//数据源
BufferedInputStream bis = new BufferedInputStream
(new FileInputStream("a.txt"));
//目的地
BufferedOutputStream bos = new BufferedOutputStream
(new FileOutputStream("b.txt"));
int by = 0;
while((by = bis.read())!=-1){
bos.write(by);
}
bis.close();
bos.close();
}
}
5.IO4
public class copy3 {
public static void main(String[] args) throws IOException {
//数据源
BufferedInputStream bis = new BufferedInputStream
(new FileInputStream("a.txt"));
//目的地
BufferedOutputStream bos = new BufferedOutputStream
(new FileOutputStream("b.txt"));
byte[] bs = new byte[1024];
while(bis.read(bs)!=-1){
bos.write(bs);
}
bis.close();
bos.close();
}
}
6.单极文件夹复制
- 复制单极文件
- 1.封装目录,判断目的目录是否存在
- 2.获得所有文件目录,并遍历目录
- 3.复制
public class CopyFolderFiles {
public static void main(String[] args) {
//封装目录
File srcFolder = new File("H:\课件");
File destFolder = new File("E:\test");
//判断目的地文件是否存在,不存在创建文件
if(!destFolder.exists()){
destFolder.mkdirs();
}
//获得资源目录下的所有文件
File[] files = srcFolder.listFiles();
//遍历所有文件
for (File file : files) {
String name = file.getName();
File start = new File(srcFolder,name);//出发地
File end = new File(destFolder,name);//目的地
try {
copy(start,end);
} catch (IOException e) {
e.printStackTrace();
}
}
}
//复制文件,所有各类型文件使用字节流
private static void copy(File start, File end) throws IOException {
//资源
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(start));
//目的
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(end));
byte[] bs = new byte[1024];
while(bis.read(bs)!=-1){
bos.write(bs);
bos.flush();
}
//释放资源
bis.close();
bos.close();
}
7.复制文件下所有的.java文件,并该为.jad文件
- 把视频名全部重命名
- 请大家把E:java目录下所有以java结尾的绝对路径输出控制台
- A:封装路径
- B:获取该文件下所有文件或者文件夹的File数组
- C:遍历File数组得到每一个File对象
- D:判断该File对象是否为文件夹
- 是:递归调用
- 不是:判断是否以java结尾
- 是:输出该文件的绝对路径
- 否:不搭理
public class FileDemo4 {
public static void main(String[] args) {
File srcFolder = new File("D:\");
getAllClassFilesPath(srcFolder);
}
private static void getAllClassFilesPath(File srcFolder) {
try {
//获得当前目录下的所有文件夹
File[] files = srcFolder.listFiles();
//遍历files对象
for (File file : files) {
//判断当前是否为文件夹
if(file.isDirectory()){
getAllClassFilesPath(file);
}else{
if(file.getName().endsWith(".class")){
System.out.println(file.getAbsolutePath());
}
}
}
} catch (Exception e) {
e.getMessage();
}
}
}
8.复制多级文件
- 1.封装目录
- 2.判断该文件是文件夹还是文件
- 是文件
- 复制该文件到此目录下
- 是文件夹
- 就在该文件目录下创建该文件夹
- 获取该文件夹下的所有File对象
- 遍历
- 回2
public class copy {
public static void main(String[] args) {
//数据源
File srcFolder = new File("H:\java");
//目的地
File destFolder = new File("F:\");
//复制多级文件
try {
copyFollder(srcFolder,destFolder);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void copyFollder(File srcFolder, File destFolder) throws Exception {
if(srcFolder.isDirectory()){
String newname = srcFolder.getName();
File newFolder = new File(destFolder,newname);
newFolder.mkdir();
File[] files = srcFolder.listFiles();
for (File file : files) {
copyFollder(file, newFolder);
}
}else{
File newFile = new File(destFolder,srcFolder.getName());
copyFile(srcFolder,newFile);
}
}
private static void copyFile(File srcFolder, File newFile) throws IOException {
//数据源
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFolder));
//目的地
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile));
//字节数组复制
byte[] bs = new byte[1024];
while(bis.read(bs)!=-1){
bos.write(bs);
bos.flush();
}
//释放资源
bos.close();
bis.close();
}
}
- R语言可视化——ggplot图表系统中的形状
- [机器学习Lesson 1 Introduction] 机器学习的动机与应用
- 洛谷P3377 【模板】左偏树(可并堆)
- Numpy 修炼之道 (12)—— genfromtxt函数
- 19.JavaScript
- 20.DOM
- 洛谷P3273 [SCOI2011]棘手的操作
- [机器学习Lesson 2]代价函数之线性回归算法
- Docker初尝试1.What is Docker?2.Try It3.Use It
- 洛谷P1456 Monkey King
- 21.jQuery
- Session分布式共享 = Session + Redis + Nginx
- 22.jQuery(实例)
- Splay详解(一)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 程序员进阶之算法练习(四十八)LeetCode
- [C#]不通过事件方式获取键盘按钮按下的状态
- 15.深入k8s:Event事件处理及其源码分析
- SwiftUI:使用计时器重复触发事件
- SwiftUI:获取应用进入后台的通知
- Windows格式化namenode报错 - Error: JAVA_HOME is incorrectly set. Please update F:hadoopconfhadoop-e...
- Windows格式化namenode报错 - ERROR namenode.NameNode: Failed to start namenode.
- Windows启动HDFS报错 - 系统找不到文件 hadoop。
- Windows启动HDFS报错 - org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
- Windows启动HDFS报错 - Could not locate Hadoop executable: E:soft_workhadoop-2.6.0binwinutils.exe
- Windows中jps命令无法查看java进程问题
- Windows搭建HDFS 2.6.0(附加搭建Hadoop)
- Windows搭建HBase 2.0.2
- 病毒与安全防护-网络安全
- 应用层安全协议-Kerberos