如何学好java的io (输入输出) java学到io了,头也开始晕了!感觉很难学我想问问以下几个问题:如何学好java的io(输入输出)?字符流和字节流的用法?Stream 流在java中是一个什么样的概念?如何理解"流"?如何来区别这些类之间的关系? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 学好io吗,应该和学其他部分一样,多练练手,至于流,个人理解应该就是你输入输出的数据啊,或者说是你的数据在传输过程中的方式字符流与字节流的不同点在于,字节流按照8位的字节来读取数据,而字符流则按照16位的Unicode来读取数据 马士兵的视屏+java编程思想…… 想初步学好io首先要理顺各个常用类字节流:InputStream、OutputStream:字节流,早期JAVA版本已存在;【byte】类型FileInputStream、FileOutputStream:文件字节流;【byte】类型BufferedInputStream、BufferedOutputStream:字节流,为InputStream、OutputStream增加缓冲区功能 【byte】类型字符流:Reader、Writer:基于字符流,JAVA后来补充;【char】类型FileReader、FileWriter:文件字符流;【char】类型BufferedReader、BufferedWriter:是Reader、Writer的子类,操作的是字符串流,使用前先创建字符流, 再创建字符串流,并且具有缓冲作用,避免了频繁的从物理设备中读取 信息;【string】类型字节流转换成字符流:InputStreamReader、OutputStreamWriter:用于将字节流转换成字符流,是字节流与字符流之间的桥梁; 【byte】—>【char】 看Thingk in java第一版吧,我当初都是这样一步一步来的,现在觉得这个Io流只要理解意思就不难.... 看《Java Core》或者《Thinking in Java》里面IO那一块,都挺不错的,把Java的IO学好了能让你的Java水平有很大的提高,上一个档次。 package io;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class FileInOutPutStreamDemo { File f=new File("e:\\abc.txt"); public static void main(String[] args) { FileInOutPutStreamDemo io=new FileInOutPutStreamDemo(); io.outPutFile("邪恶少年今天到此一游!"); io.inPutFile(); } private void inPutFile() { // TODO Auto-generated method stub try { FileInputStream fis=new FileInputStream(f); int temp=0; String test=""; try { while ((temp=fis.read())!=-1) { test+=(char)temp; } System.out.println(new String(test.getBytes("iso-8859-1"))); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void outPutFile(String content) { // TODO Auto-generated method stub if (f.exists()==false) { try { f.createNewFile(); FileOutputStream fos=new FileOutputStream(f); fos.write(content.getBytes()); fos.flush(); fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }} package io;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.Reader;import java.io.Writer;public class WriterAndReaderDemo { File f=new File("e:\\dnf.txt"); public static void main(String[] args) { WriterAndReaderDemo io=new WriterAndReaderDemo(); io.writeFile("邪恶少年今天很是不爽!"); io.readFile(); } private void readFile() { // TODO Auto-generated method stub try { Reader r=new BufferedReader(new FileReader(f)); int temp=0; String test=""; try { while ((temp=r.read())!=-1) { test+=(char)temp; } System.out.println(test); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void writeFile(String content) { // TODO Auto-generated method stub if (f.exists()==false) { try { f.createNewFile(); Writer fw=new FileWriter(f); fw.write(content); fw.flush(); fw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }} package io;import java.io.EOFException;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;public class ObjectInOutStreamDemo { String path="e:\\planda.cc"; public static void main(String[] args) { ObjectInOutStreamDemo io=new ObjectInOutStreamDemo(); io.outPutObject(); io.inPutObject(); } private void inPutObject() { // TODO Auto-generated method stub try { ObjectInputStream ois=new ObjectInputStream(new FileInputStream(path)); Object obj; Planda p; try { while ((obj=ois.readObject())!=null) { p=(Planda)obj; System.out.println(p.getId()+"号熊猫是"+p.getName()); } }catch (EOFException e) { // TODO: handle exception } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void outPutObject() { // TODO Auto-generated method stub Planda p1=new Planda(100,"团团"); Planda p2=new Planda(200,"圆圆"); try { ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(path)); oos.writeObject(p1); oos.writeObject(p2); oos.flush(); oos.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}class Planda implements Serializable{ private int id; private String name; public Planda(int id,String name) { // TODO Auto-generated constructor stub this.id=id; this.name=name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }} 总结的不错,但是这个结合《java与模式》去学习,这样即学习了模式也增加了对IO的理解! 看看InputStream、OutputStream的源代码就知道,其实他们的定义十分简单。个人感觉是对一种“长时间,且时断时续读出或者写入信息”的抽象。 初学的时候容易被他们的中文翻译名字所误导。 不用那么麻烦,用到类也不多。常用的:InputStream OutputStream字节类型的: DataInputStream DataOutputStream字符类型的: java.util.Scanner PrintWriter偶尔将内在字符串转换成流的形式用:CharArrayReader CharArrayWriter就这些通常足够用了,其它都是浮动。 我觉得没必要弄那么清楚,有需要的找帮助文档你不可能把JAVA的所有类之间的关系都记住吧,看帮助文档和源码才是王道 马士兵的IO讲的还是挺形象的,比较容易理解。thinking in java 里的IO也不错。看完应该会理解的。 java事件问题 求数据库连接池代码 字符串回文问题,请大家指点 JAVA如何恢复窗口 OutputStream 的flush() 和 write( ) java在子窗体最大化时,子窗体的关闭和最大化最小化按钮可以移到主窗体的菜单栏里吗? 拷贝专家的原代码怎么运行不了?请斑竹及爱好者近来看看!不甚感激!!! 优秀的java集成开发环境 如何使一个JDialog弹出时,上面的组件都没有焦点 Java 聊天室程序 新手用socket做的。求帮忙找错 什么时候这个变量会变? 求一java 组件
字符流与字节流的不同点在于,字节流按照8位的字节来读取数据,而字符流则按照16位的Unicode来读取数据
InputStream、OutputStream:字节流,早期JAVA版本已存在;【byte】类型
FileInputStream、FileOutputStream:文件字节流;【byte】类型
BufferedInputStream、BufferedOutputStream:字节流,为InputStream、OutputStream增加缓冲区功能
【byte】类型字符流:
Reader、Writer:基于字符流,JAVA后来补充;【char】类型
FileReader、FileWriter:文件字符流;【char】类型
BufferedReader、BufferedWriter:是Reader、Writer的子类,操作的是字符串流,使用前先创建字符流,
再创建字符串流,并且具有缓冲作用,避免了频繁的从物理设备中读取 信息;【string】类型
字节流转换成字符流:
InputStreamReader、OutputStreamWriter:用于将字节流转换成字符流,是字节流与字符流之间的桥梁;
【byte】—>【char】
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;public class FileInOutPutStreamDemo {
File f=new File("e:\\abc.txt");
public static void main(String[] args) {
FileInOutPutStreamDemo io=new FileInOutPutStreamDemo();
io.outPutFile("邪恶少年今天到此一游!");
io.inPutFile();
}
private void inPutFile() {
// TODO Auto-generated method stub
try {
FileInputStream fis=new FileInputStream(f);
int temp=0;
String test="";
try {
while ((temp=fis.read())!=-1) {
test+=(char)temp;
}
System.out.println(new String(test.getBytes("iso-8859-1")));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void outPutFile(String content) {
// TODO Auto-generated method stub
if (f.exists()==false) {
try {
f.createNewFile();
FileOutputStream fos=new FileOutputStream(f);
fos.write(content.getBytes());
fos.flush();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;public class WriterAndReaderDemo {
File f=new File("e:\\dnf.txt");
public static void main(String[] args) {
WriterAndReaderDemo io=new WriterAndReaderDemo();
io.writeFile("邪恶少年今天很是不爽!");
io.readFile();
}
private void readFile() {
// TODO Auto-generated method stub
try {
Reader r=new BufferedReader(new FileReader(f));
int temp=0;
String test="";
try {
while ((temp=r.read())!=-1) {
test+=(char)temp;
}
System.out.println(test);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void writeFile(String content) {
// TODO Auto-generated method stub
if (f.exists()==false) {
try {
f.createNewFile();
Writer fw=new FileWriter(f);
fw.write(content);
fw.flush();
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class ObjectInOutStreamDemo {
String path="e:\\planda.cc";
public static void main(String[] args) {
ObjectInOutStreamDemo io=new ObjectInOutStreamDemo();
io.outPutObject();
io.inPutObject();
}
private void inPutObject() {
// TODO Auto-generated method stub
try {
ObjectInputStream ois=new ObjectInputStream(new FileInputStream(path));
Object obj;
Planda p;
try {
while ((obj=ois.readObject())!=null) {
p=(Planda)obj;
System.out.println(p.getId()+"号熊猫是"+p.getName());
}
}catch (EOFException e) {
// TODO: handle exception
}
catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void outPutObject() {
// TODO Auto-generated method stub
Planda p1=new Planda(100,"团团");
Planda p2=new Planda(200,"圆圆");
try {
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(path));
oos.writeObject(p1);
oos.writeObject(p2);
oos.flush();
oos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class Planda implements Serializable{
private int id;
private String name;
public Planda(int id,String name) {
// TODO Auto-generated constructor stub
this.id=id;
this.name=name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
总结的不错,但是这个结合《java与模式》去学习,这样即学习了模式也增加了对IO的理解!
常用的:
InputStream OutputStream
字节类型的: DataInputStream DataOutputStream
字符类型的: java.util.Scanner PrintWriter
偶尔将内在字符串转换成流的形式用:CharArrayReader CharArrayWriter就这些通常足够用了,其它都是浮动。
你不可能把JAVA的所有类之间的关系都记住吧,看帮助文档和源码才是王道
thinking in java 里的IO也不错。
看完应该会理解的。