java之IO节点流示例,其他情况举一反三都是类似的

简介: java之IO节点流示例,其他情况举一反三都是类似的
-I/O流的一般操作流程:-创建或者选择数据源-选择I/O流-创建操作对象-创建读取or存储的缓存区-具体操作,写入,读取,转换等等-**出现乱码原因**:字节转字符,**字节数不够**,导致乱码;**编码不一致**导致乱码-注意事项-`FileInput/OutputStream`最适合用于操作非文本文件(如图片、视频等)-`FileReader/Writer`最适合用于操作文本文件(如txt文件)-`BufferStream`可以加速节点流操作文件的速度```*抽象基类节点流(文件流)缓冲流字节流*InputStreamFileInputStreamBufferedInputStream*OutputStreamFileOutputStreamBufferedOutputStream字符流*ReaderFileReaderBufferedReader*WriterFileWriterBufferedWriter```-示例:文件<----->字节流:`BufferedInputStream(newFileInputStream(src))`----->`ByteArrayOutputStream`;  `ByteArrayInputStream`---->`newBufferedOutputStream(newFileOutputStream(dest)`-示例:```java/**文件转字节流*/publicstaticbyte[] fileToByteArray(StringfilePath){
//create sourceFilefile=newFile(filePath);
//select streamInputStreamis=null;
ByteArrayOutputStreamos=null;
try {
//create objectis=newFileInputStream(file);
os=newByteArrayOutputStream();
//create catch placebyte[] flush=newbyte[1024*10];
//do somethingintlen=-1;
while ((len=is.read(flush))!=-1){
Stringstr=newString(flush, 0, len);
os.write(str.getBytes());
                }
os.flush();
returnos.toByteArray();
            } catch (FileNotFoundExceptione) {
e.printStackTrace();
            } catch (IOExceptione) {
e.printStackTrace();
            } finally {
//先开后关try {
if (null!=os){
is.close();
                    }
                } catch (IOExceptione) {
e.printStackTrace();
                }
try {
if (null!=is){
is.close();
                    }
                } catch (IOExceptione) {
e.printStackTrace();
                }
            }
returnnull;
        }
``````java/**字节流转文件*/publicstaticbooleanbyteArrayToFile(byte[] bytesArray, StringfilePath){
//create sourceFilefile=newFile(filePath);
//select streamByteArrayInputStreamis=null;
FileOutputStreamos=null;
try {
//create objectis=newByteArrayInputStream(bytesArray);
os=newFileOutputStream(file);
//create catch placebyte[] flush=newbyte[1024*10];
//do somethingintlen=-1;
while ((len=is.read(flush))!=-1){
os.write(flush, 0, len);
                }
os.flush();
returntrue;
            } catch (FileNotFoundExceptione) {
e.printStackTrace();
            } catch (IOExceptione) {
e.printStackTrace();
            } finally {
//先开后关try {
if (null!=os){
is.close();
                    }
                } catch (IOExceptione) {
e.printStackTrace();
                }
try {
if (null!=is){
is.close();
                    }
                } catch (IOExceptione) {
e.printStackTrace();
                }
            }
returnfalse;
        }
``````javapublicstaticbooleanbyteArrayToFile(byte[] bytesArray, StringfilePath){
//create sourceFilefile=newFile(filePath);
//select stream(高版本JDK,无需close,try会帮你执行close, 操作字节流使用BufferedI/O,大大提高性能)try (ByteArrayInputStreamis=newByteArrayInputStream(bytesArray); OutputStreamos=newBufferedOutputStream(newFileOutputStream(file))){
//create catch placebyte[] flush=newbyte[1024*10];
intlen=-1;
while ((len=is.read(flush))!=-1){
os.write(flush, 0, len);
            }
os.flush();
returntrue;
        } catch (FileNotFoundExceptione) {
e.printStackTrace();
        } catch (IOExceptione) {
e.printStackTrace();
        }
returnfalse;
    }
```-字节流,字符流转换;页面源代码读取```javaimportjava.io.*;
importjava.net.URL;
/*** @author yyds* 字符流转字节流**/publicclassConvertTest {
publicstaticvoidmain(String[] args) {
//操作system,,in和system.outtry (
// InputStreamReader isr = new InputStreamReader(System.in);//OutputStreamWriter osw = new OutputStreamWriter(System.out);BufferedReaderisr=newBufferedReader(newInputStreamReader(System.in));
BufferedWriterosw=newBufferedWriter(newOutputStreamWriter(System.out));
BufferedReaderis=newBufferedReader(newInputStreamReader(newURL("http://www.baidu.com").openStream(), "UTF-8"));
BufferedWriterbw=newBufferedWriter(newOutputStreamWriter(newFileOutputStream("baidu.html"), "UTF-8"));
             ) {
inttemp;
Stringtemp2;
Stringtemp1;
while ((temp=is.read())!=-1){
System.out.print((char) temp);
bw.write(temp);
                }
while ((temp1=is.readLine())!=null){
bw.write(temp1);
bw.newLine();
                }
bw.flush();
while (!"exit".equals(temp2=isr.readLine())){
osw.write(temp2);
osw.newLine();
osw.flush();
            } } catch (IOExceptione) {
System.out.println(e.toString());
        }
    }
}
```
相关文章
|
29天前
|
Java
在 Java 中捕获和处理自定义异常的代码示例
本文提供了一个 Java 代码示例,展示了如何捕获和处理自定义异常。通过创建自定义异常类并使用 try-catch 语句,可以更灵活地处理程序中的错误情况。
55 1
|
2月前
|
存储 Java
Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。
【10月更文挑战第19天】本文详细介绍了Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。HashMap以其高效的插入、查找和删除操作著称,而TreeMap则擅长于保持元素的自然排序或自定义排序,两者各具优势,适用于不同的开发场景。
47 1
|
19天前
|
Java
java 中 IO 流
Java中的IO流是用于处理输入输出操作的机制,主要包括字节流和字符流两大类。字节流以8位字节为单位处理数据,如FileInputStream和FileOutputStream;字符流以16位Unicode字符为单位,如FileReader和FileWriter。这些流提供了读写文件、网络传输等基本功能。
40 9
|
22天前
|
Java
在Java中实现接口的具体代码示例
可以根据具体的需求,创建更多的类来实现这个接口,以满足不同形状的计算需求。希望这个示例对你理解在 Java 中如何实现接口有所帮助。
36 1
|
2月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
87 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
1月前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
2月前
|
存储 Java
什么是带有示例的 Java 中的交错数组?
什么是带有示例的 Java 中的交错数组?
53 9
|
2月前
|
Java
让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)
本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。
28 1
|
2月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
84 4
|
2月前
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
68 1