package io;
import java.io.*;
/**
* 利用缓冲区原理,BufferedInputStream,
* 实现的文件字节流读取功能示范
* @author 辉太郎
*/
public class BufferedInOutputStream {
public BufferedInOutputStream() {
ioTest2();
}
public void ioTest2() {
FileInputStream in = null ;
BufferedInputStream bi = null;
int i= 0;
int count=0;
try{
in = new FileInputStream("D:/j/o/java2.txt");
bi = new BufferedInputStream(in);
while(( i=bi.read())!=-1) {
System.out.print((char)i);
count++;
}
System.out.println(count);
in.close();
bi.close();
}catch (IOException e){
e.printStackTrace();
}
}
public static void main(String[] args) {
new BufferedInOutputStream();
}
}
package io;
import java.io.*;
/**
* 利用缓冲区原理,BufferedInputStream,
* 实现的文件字符流读取和写入功能示范
* @author 辉太郎
*/
public class BufferedReaderWriter {
public BufferedReaderWriter() {
bufferRdWter();
}
public void bufferRdWter() {
FileReader fr = null;
FileWriter wt = null;
BufferedReader br = null;
BufferedWriter bw = null;
String s = "";
try {
fr = new FileReader("D:/j/o/java.txt");
br = new BufferedReader(fr);
wt = new FileWriter("D:/j/o/javat2.txt");
bw = new BufferedWriter(wt);
while ((s = br.readLine()) != null) {
bw.write(s);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bw.flush();
wt.close();
bw.close();
br.close();
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new BufferedReaderWriter();
}
}
package io;
import java.io.*;
/**
* 数据流,注意的是先进先出.数据流方便我们用IO输出基本数据类型的值.比如它提供readDouble();
* @author 辉太郎
*/
public class DataInOutputStream {
public DataInOutputStream() {
dataInOutputStream();
}
public void dataInOutputStream() {
ByteArrayOutputStream bs = new ByteArrayOutputStream();
DataOutputStream ds = new DataOutputStream(bs);
try {
ds.writeDouble(Math.random());
ds.writeBoolean(false);
// 其中bs.toByteArray()是把开始我们写入的东西放到这个字节数组中,然后我们从这个字节数组中取出数据
ByteArrayInputStream bi = new ByteArrayInputStream(bs.toByteArray());
DataInputStream di = new DataInputStream(bi);
System.out.println(di.available());
System.out.println(di.readDouble());
System.out.println(di.readBoolean());
di.close();
bi.close();
ds.close();
bs.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new DataInOutputStream();
}
}
package io;
import java.io.*;
/**
*
* FileInputStream/FileOutputStream的示例
* @author 辉太郎
*/
public class InOutputStream {
public InOutputStream() {
inOutputStream();
}
public void inOutputStream() {
InputStream is = null;
OutputStream os = null;
byte[] b;
int i = 0;
try {
is = new FileInputStream("D:/j/o/java2.txt");
os = new FileOutputStream("D:/j/o/java.txt");
b = new byte[is.available()];
while ((i = is.read(b)) != -1) {
os.write(b);
}
os.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new InOutputStream();
}
}
package io;
import java.io.*;
/**
*
* 转换流示例,这个流最大的作用就是将字节流转换成字符流来用!
* @author 辉太郎
*/
public class InOutputStreamReaderWriter {
public InOutputStreamReaderWriter() {
inOutputReaderWriter();
}
public void inOutputReaderWriter() {
InputStreamReader ir = null;
OutputStreamWriter ow = null;
int i = 0;
try {
ir = new InputStreamReader(new FileInputStream("D:/j/o/java.txt"));
ow = new OutputStreamWriter(new FileOutputStream(
"D:/j/o/java2.txt", true), "ISO8859-1");// latin-1
System.out.println(ow.getEncoding());
while ((i = ir.read()) != -1) {
ow.write(i);
}
ow.write("java.io");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
ow.flush();
ow.close();
ir.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new InOutputStreamReaderWriter();
}
}
package io;
import java.io.*;
/**
* InputStreamReader外面套一个BufferedReader,来实现接受控制台System.in输入的字符
*
* @author 辉太郎
*/
public class InputStreamSystemIn {
public InputStreamSystemIn() {
systemInIo();
}
public void systemInIo() {
String s = "";
InputStreamReader ir = null;
BufferedReader br = null;
ir = new InputStreamReader(System.in);
br = new BufferedReader(ir);
try {
while (s != null) {
s = br.readLine();
if (s.equals("2")) {
break;
} else {
System.out.println(s);
}
}
br.close();
ir.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new InputStreamSystemIn();
}
}
package io;
import java.io.*;
/**
* ObjectStream流,对象序列化
* @author 辉太郎
*/
public class ObjectStream {
public ObjectStream() {
objectStream();
}
public void objectStream() {
Test t = new Test();
try {
FileOutputStream fs = new FileOutputStream("D:/j/o/java.dat");
ObjectOutputStream oo = new ObjectOutputStream(fs);
oo.writeObject(t);
FileInputStream fi = new FileInputStream("D:/j/o/java.dat");
ObjectInputStream oi = new ObjectInputStream(fi);
Test tt = (Test) oi.readObject();
System.out.println(tt.d + " " + tt.i + " " + tt.k + " " + tt.s);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new ObjectStream();
}
}
class Test implements Serializable {
int i = 22;
int k = 11;
// 下面的transient关键字,作用是将d设为透明的,不存在的,然后在输出的时候就输出默认值
transient double d = 22.22;
String s = "string";
}
---------------------------------------
package io;
import java.io.*;
/**
* PrintStream 打印输出流.下面这个例子 它是通过设置System.setOut来指向我们FileOutputStream 指向的文件流
* 所以最后输出就是在这个java.txt文件里面
*
*/
public class PrintStreamTest {
PrintStreamTest() {
printStreamT();
}
public void printStreamT() {
PrintStream ps = null;
try {
FileOutputStream fis = new FileOutputStream("D:/j/o/java.txt");
ps = new PrintStream(fis);
if (ps != null) {
System.setOut(ps);
}
System.out.println("高枕吴忧");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new PrintStreamTest();
}
}
-------------------------------------
package io;
import java.io.*;
import java.util.Date;
/**
* @author 高枕吴忧
* 利用PrintWriter实现的一个"虚假"的日志处理
*
*/
public class PrintWriterTest {
public PrintWriterTest() {
printWriter();
}
public void printWriter() {
String s = null;
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
try {
BufferedWriter bw =
new BufferedWriter(new FileWriter("D:/j/o/java.txt",true));
PrintWriter log =
new PrintWriter(bw);
while((s = br.readLine()) != null) {
if(s.equalsIgnoreCase("exit")){
break;
}
log.println(" - - - - - - - - - - - -");
log.println(s.toUpperCase());
log.flush();
}
log.println("===="+new Date()+"====");
log.flush();
log.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new PrintWriterTest();
}
}
-------------------------------------
package io;
import java.io.*;
/**
* @author 高枕吴忧
* Reader/Writer字符输入输出流示例.
*
*/
public class ReaderWriter {
public ReaderWriter() {
readerWriter();
}
public void readerWriter() {
Reader rd = null;
Writer wt = null;
int i = 0 ;
try {
rd = new FileReader("D:/j/o/java.txt");
wt = new FileWriter("D:/j/o/javat2.txt");
while((i = rd.read()) != -1) {
wt.write(i);
}
wt.flush();
wt.close();
rd.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new ReaderWriter();
}
}
分享到:
相关推荐
下面通过两个示例来展示如何使用Java I/O读取文件内容: **5.1 常用读取字节文件** ```java public static void readFileByBytes(String fileName) { File file = new File(fileName); InputStream in = null; ...
本教程详细讲解了这些知识点,并配以代码示例和笔记,旨在帮助学习者逐步掌握Java I/O流的使用,无论你是初学者还是有一定经验的开发者,都能从中受益。通过深入学习和实践,你将能够熟练地处理各种数据输入输出场景...
Java使用I/O流读取文件内容的方法是Java编程中常用的文件读取方式。该方法可以将文件内容读取到程序中,并对其进行处理和分析。在Java中,I/O流是指数据流向某个对象的数据序列,并且到达这个对象的过程。输入流是...
在这个"IODemo.zip"中,我们很可能会找到一系列关于Java I/O流的示例代码,这些示例可能涵盖字节流、字符流、缓冲流、转换流以及Apache Commons IO库的一些实用方法。 首先,Java I/O流分为两大类:字节流(Byte ...
- **概述**:Java 中的 I/O 流分为字节流和字符流两种。 **2. 字节流的父类**:`InputStream` 和 `OutputStream` 类是所有字节流的基类,提供了最基本的读写操作。 **3. InputStream 和 OutputStream 的包装类*...
本文将深入探讨Java中File类的使用以及I/O流的相关知识。 首先,File类是Java.io包中的核心类,它提供了操作文件和目录的功能。但需要注意的是,File类并不能直接读写文件内容,而是用于管理和获取文件的属性。例如...
Java I/O(输入/输出)流作为Java语言中处理输入和输出的一种高级特性,为数据的输入输出提供了丰富的操作接口。通过这一特性,开发者能够有效地读取和写入数据到各种资源中,包括文件、网络等。 #### 二、流的概念...
Java的I/O流系统处理数据的输入和输出,包括文件操作、网络通信等。 14. **线程**: Java内置了对多线程的支持,可以创建和管理并发执行的任务。 15. **注解**: 注解是元数据,为编译器、JVM或其他工具提供...
Java I/O 流编程是Java语言中用于处理输入输出操作的核心机制。流的概念源自于数据传输,它将数据从一个源头(源)传输到目的地(目标)的过程抽象为流。在Java中,I/O流分为两大类:输入流(InputStream)和输出流...
总结来说,Java通过I/O流可以轻松读取本地HTML文件,结合`Jsoup`库可以方便地处理HTML内容,最后使用JDBC将处理后的数据保存到数据库。这些都是Java开发中常用的技术,对于网络编程和数据处理非常实用。
6. **输入/输出流**:Java的I/O流用于读写数据,包括文件操作、网络通信等。InputStream、OutputStream是基本的抽象类,FileInputStream、FileOutputStream等是常用的实现类。 7. **多线程**:Java内置了对多线程的...
例如,`java.io`包提供了文件操作和流处理功能,`java.util`包中的`ArrayList`和`HashMap`是常用的集合类,`java.net`包则处理网络通信。Java API的设计理念强调了“一次编写,到处运行”,理解其工作原理有助于写出...
这些类在内部维护了一个缓冲区,可以减少实际的物理I/O次数。 五、转换流(Wrapper Stream) 字符流与字节流之间可以通过转换流进行互转。`InputStreamReader`和`OutputStreamWriter`就是这样的转换流,它们分别将...
通过以上介绍,我们可以看到Java NIO为Java的I/O操作带来了革命性的变化,不仅提升了I/O操作的速度,也提供了更加灵活和强大的编程模型。对于那些需要处理大量I/O操作的应用程序来说,Java NIO无疑是一个巨大的福音...
Java输入输出流是Java I/O库中的基础概念,它们用于在程序和外部源之间进行数据的读取和写入操作。在Java中,所有的输入输出操作都是以流的形式进行的,其中 InputStream 和 OutputStream 是两个最基础的抽象类,...
### Java高级知识——Socket通信与I/O流详解 #### 一、Socket通信基础 ##### 1.1 Socket概念 在Java编程中,`Socket`(套接字)是一种用于网络通信的重要技术,它允许两台计算机之间进行双向数据传输。在计算机...
Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java从1.4版本开始引入的一个新特性,旨在提供一种比传统的IO(I/O)模型更高效、性能更好的处理输入和输出的方式。传统的Java IO基于流(Stream)...
在北大青鸟的Java教材第8章中,主要讲解了Java的I/O处理,包括文件操作和流的概念。这一章非常详细,包含了丰富的示例和图解,方便学习者理解和实践。 首先,章节介绍了如何使用`Date`类来获取系统的当前时间,以及...