`

java IO

    博客分类:
  • Java
 
阅读更多

 

流(IO管道):

 

1、inputStream OutputStream(读取单位:字节byte); Reader Writer(读取单位:字符char)

 

2、字符流:凡是以Reader、writer结尾的如fileReader,都为字符流(16位),可避免中文乱码

字节流:凡是以inputStream、outputStream结尾的都是字节流(8位),如:FileInputStream

 

3、FileInputStream in = new FileInputStream()表示建立管道

  in.read()表示读取文件

 

以上为节点流下面为处理流

 

4、处理流(也分为字符流(如BufferedReader)和字节流(如BufferInputStream))

处理流是套接在其它流上的流

 

a.缓冲流:BufferWriter、BufferInputStream等

例如:BufferInputStream bin = new BufferInputStream(in)//建立套接在其它流上的流

b.转换流:将字节流转化为字符流;InputStreamReader、OutputStreamWriter等

例如:OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("c:/ex.txt",true));

BufferWriter bw = new BufferWriter(osw);

 

c.数据流:DataInputStream继承自InputStream,套接在InputStream型的节点流上,out的同in

例如:ByteArrayOutputStream baos = new ByteArrayOutputStream ();//内存中建立一个数组,然后建立一个流连接到其上

DataOutputStream dos = new DataOutputStream(baos);

dos.writeDouble(Math.random());

 

d.打印流:PrintWriter(字符)、 PrinterStream(字节);如System.out就是PrinterStream类型;此流不会抛异常;自动flush;

例如:System.setOut(new PrinterStream(new FileOutputStream("C:/log.dat")) );

System.out.println("daying...")//会打印到C:/log.dat这个文件,而不是控制台

 

e.object流:ObjectOutputStream、transient(transient int a =0;//表示序列化时不考虑此属性);将object转化为字节流为序列化serializable,继承自serializable的类表示可以序列化的类;

例如:ObjectOutputStreamoos = new ObjectOutputStream(new FileOutputStream());

oos.writeObject(obj);oos.flush();oos.close();

 

5、BufferWriter提供了newLine()写入一个行分隔符,write()可以写字符串;

BufferReader提供了readLine()赌气一行字符串(以\r或\n分隔)

 

6、ex:

//写入文件

// String tempFile =  "WebRoot\\pages\\dbdata\\download\\ex.exp";

String tempFile = webPath + "\\webapps\\pages\\dbdata\\download\\ex.exp";

File file = new File(tempFile);

String fileName = "";

// String filePath = "WebRoot\\pages\\dbdata\\download\\" ;

String filePath =  webPath + "\\webapps\\pages\\dbdata\\download\\" ;

FileUtil fu = new FileUtil();

System.out.println("文件路径(服务器):"+filePath);

if (sfileName==null ||sfileName.trim().length()<1){

fileName = UUID.randomUUID().toString() + ".exp";

try {

if (!file.getParentFile().exists())file.getParentFile().mkdirs();

String outFile = filePath + fileName;

OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(new File(outFile)),"UTF-8");

BufferedWriter bw  =new BufferedWriter(write);

bw.write(" <tables> "+xmlfile.toString());

bw.close();

} catch (IOException e) {

e.printStackTrace();

return null;

}

}else{

fileName = sfileName;

try {

OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(filePath + fileName,true),"UTF-8");

BufferedWriter bw  =new BufferedWriter(write);

bw.write(xmlfile.toString());

bw.close();

} catch (IOException e) {

e.printStackTrace();

return null;

}

}

 

7、解决乱码

 

最近在做HTML静态生成,需要从硬盘上把模版文件的内容读出来。然后,替换相关标签写到指定的文件中。无论是读写,都遇到了中文乱码问题。试过多种方法,发现下面一种可以避免中文乱码。(无论读取还是写入一定要进行编码转换。)

1、JAVA读取文件,避免中文乱码。

/**
*读取文件内容

* @param filePathAndName
*String如 c:\\1.txt绝对路径
* @return boolean
*/
public static String readFile(String filePathAndName) {
String fileContent = "";
try {
File f = new File(filePathAndName);
if(f.isFile()&&f.exists()){
InputStreamReader read = new InputStreamReader(newFileInputStream(f),"UTF-8");
BufferedReader reader=new BufferedReader(read);
String line;
while ((line = reader.readLine()) != null) {
fileContent += line;
}
read.close();
}
} catch (Exception e) {
System.out.println("读取文件内容操作出错");
e.printStackTrace();
}
return fileContent;
}

2、JAVA写入文件,避免中文乱码。

public static void writeFile(String filePathAndName,String fileContent) {
try {
File f = new File(filePathAndName);
if (!f.exists()) {
f.createNewFile();
}
OutputStreamWriter write = new OutputStreamWriter(newFileOutputStream(f),"UTF-8");
BufferedWriter writer=new BufferedWriter(write); 
//PrintWriter writer = new PrintWriter(new BufferedWriter(newFileWriter(filePathAndName)));
//PrintWriter writer = new PrintWriter(newFileWriter(filePathAndName));
writer.write(fileContent);
writer.close();
} catch (Exception e) {
System.out.println("写文件内容操作出错");
e.printStackTrace();
}
}

 

分享到:
评论

相关推荐

    Java IO应届生培训讲义

    Java IO应届生培训讲义是一份面向刚毕业的大学生进行Java IO相关知识的培训资料,它涵盖了Java IO的基础知识、不同的IO模型以及Java中的BIO、NIO和AIO高级IO类库。下面详细解释这些知识点: 1. 用户空间和内核空间 ...

    Java IO知识点

    Java IO(Input/Output)是Java编程语言中用于处理输入输出操作的重要部分,涉及文件、网络、内存等数据传输。本文将深入探讨Java IO的基本概念、分类、选择流的策略以及常用的流类型。 首先,File类是Java IO的...

    java IO教程,java IO教程,java IO教程

    java IO教程,java IO教程,java IO教程,java IO教程java IO教程java IO教程java IO教程java IO教程,java IO教程java IO教程java IO教程java IO教程java IO教程,java IO教程,java IO教程,java IO教程,java IO...

    java io 结构图

    Java IO(Input/Output)是Java编程语言中用于处理输入和输出操作的重要组成部分。它提供了一整套类库,使得开发者能够有效地读取和写入数据到不同的源和目标,如文件、网络、内存缓冲区等。Java IO体系结构设计得...

    Java IO_NIO

    Java IO(Input/Output)是Java编程语言中用于处理输入输出操作的基础框架,它提供了丰富的类库,使得程序能够与各种设备、文件、网络进行数据交互。然而,传统的IO模型在处理大量并发连接时表现出效率较低的问题,...

    java IO.chm

    《Java IO.chm》是一个关于Java输入/输出(IO)技术的压缩文件,其中包含了丰富的资料,适合开发者深入理解和学习Java IO系统。这篇详细的总结将围绕Java IO体系结构、核心类、流的概念、缓冲区、转换流、字符集、...

    Java教程之javaIO详解

    Java IO 详解 Java IO(Input/Output)是 Java 语言中用于处理输入输出操作的类库,提供了大量的类和方法来实现文件、网络、字节流等方面的输入输出操作。下面对 Java IO 中的重要知识点进行详细说明。 一、File ...

    Java IO处理类的汇总

    Java IO处理类是Java平台中用于输入输出操作的核心部分,它允许程序与各种类型的输入源(如文件、网络连接)以及输出目标(如显示器、打印机)进行交互。本篇文章将全面解析Java IO处理类,包括基本概念、常用类库、...

    Java IO 编程集合

    Java IO编程是Java平台中处理输入输出操作的重要组成部分,它提供了丰富的类库,使得开发者能够高效地进行数据的读取、写入、流的管理和转换。在这个集合中,我们主要探讨的是Java IO在文件读写方面的实践应用。 一...

    JAVA IO流技术

    Java IO流技术是Java平台中用于处理输入输出的重要机制,其核心在于数据的传输,从数据源到程序或从程序到目的地。在Java中,流分为两大类:输入流(InputStream、Reader)和输出流(OutputStream、Writer)。输入流...

    Java IO 使用例

    在“JavaIODemo”这个示例中,可能会包含以上提到的一些或全部Java IO操作的代码实例,通过这些实例,我们可以学习如何在实际项目中应用Java IO API。实践是掌握Java IO的最佳方式,通过对这些示例的分析和运行,...

    java io.pdf

    Java IO(Input/Output)是Java编程语言中用于处理输入和输出操作的重要组成部分。它提供了丰富的类库,允许程序员在程序之间传输数据,包括从文件、网络、内存缓冲区到其他程序或系统组件。Java IO API是Java平台的...

    JavaIO流详解归纳.pdf

    JavaIO流详解归纳 Java 的核心库 java.io 提供了全面的 IO 接口,包括文件读写、标准设备输出等。Java 中 IO 是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。在项目开发中,IO 是非常...

    javaIo操作的基础代码

    Java IO操作是Java编程中的重要组成部分,主要用于处理输入和输出数据。在Java中,IO操作涉及到文件、字节流、字符流以及管道流等多个概念。下面将详细解释这些知识点。 首先,我们来看“文件类”。在Java中,`java...

    Java IO 与 装饰模式

    Java IO 与 装饰模式 在Java编程中,输入输出(IO)处理是程序设计中的重要组成部分,用于读取、写入和处理数据。Java IO库提供了一整套类来支持各种类型的输入输出操作,包括文件、网络、内存等。而装饰模式是一种...

    JAVA IO流缓冲字节流缓冲字符流等流经典代码示例加注释总结.rar

    2、常用21个IO流:FileWriter、FileReader、...3、JAVA IO流经典代码示例,示例从易到难。代码功能涉及字节、字符、字符串、文本文件、图片、音频、视频。演示错误用法和经典用法。 4、代码的结构可查看README文件。

    java io流 案例

    Java IO流是Java平台中的重要组成部分,用于处理输入和输出操作。它允许程序与外部设备如硬盘、网络、内存等进行数据传输。IO流的概念基于流(Stream)模型,数据以字节或字符序列的形式流动。Java IO库提供了丰富的...

    java io流学习笔记1

    Java IO流是Java编程语言中处理输入输出操作的重要部分,尤其在数据传输、文件读写等方面发挥着核心作用。本文将深入探讨Java IO流的基本概念、类型以及它们在实际开发中的应用。 首先,理解IO流的基本概念至关重要...

    Java IO 工具类大全

    Java IO(Input/Output)是Java平台中处理输入与输出数据的核心部分,它提供了丰富的类库,使得开发者能够高效地进行文件、网络、内存以及其他I/O流的操作。本篇文章将全面解析Java IO工具类,帮助你理解并掌握其在...

Global site tag (gtag.js) - Google Analytics