//z_Data.java
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;public class z_Data{
public static void main(String args[]){
try{
FileOutputStream fout=new FileOutputStream("out1.txt");
DataOutputStream dfout=new DataOutputStream(fout);
int i;
for(i=0;i<4;i++)
dfout.writeInt('0'+i);
dfout.close();
FileInputStream fin=new FileInputStream("out1.txt");
DataInputStream dfin=new DataInputStream(fin);
for(i=0;i<4;i++)
System.out.print(dfin.readInt()+",");
dfin.close();
}
catch(Exception e){
System.err.println("error occured:"+e);
e.printStackTrace();
}
}
}
这个程序的执行结果是48,49,50,51,
但是文本中的数字是0 1 2 3,如果将dfout.writeInt('0'+i)变成dfout.writeInt(i),控制台中是0,1,2,3,但是文本中不能正常显示。
本人初学java,不知道这里数据是怎样转换的,求助。
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;public class z_Data{
public static void main(String args[]){
try{
FileOutputStream fout=new FileOutputStream("out1.txt");
DataOutputStream dfout=new DataOutputStream(fout);
int i;
for(i=0;i<4;i++)
dfout.writeInt('0'+i);
dfout.close();
FileInputStream fin=new FileInputStream("out1.txt");
DataInputStream dfin=new DataInputStream(fin);
for(i=0;i<4;i++)
System.out.print(dfin.readInt()+",");
dfin.close();
}
catch(Exception e){
System.err.println("error occured:"+e);
e.printStackTrace();
}
}
}
这个程序的执行结果是48,49,50,51,
但是文本中的数字是0 1 2 3,如果将dfout.writeInt('0'+i)变成dfout.writeInt(i),控制台中是0,1,2,3,但是文本中不能正常显示。
本人初学java,不知道这里数据是怎样转换的,求助。
解决方案 »
- java图形界面编程
- "a"代表一个匿名String对象,那么new StringBuilder("a")是不是产生了两个对象?
- 如何去除版本控制
- 批处理中出现错误: ORA-00913: 值过多.错误如下。
- 有谁知道Integer.parseInt()和Integer.valueOf()有什么区别吗?
- 写文件操作为什么在LINUX和WINDOWS下的结果会不一样?!!?
- java servlet连接oralce数据库为什么连接不上!
- 新人求助,求个小老师!!
- public class FileViewer extends Frame implements ActionListener!
- java学到什么水平,可以去应聘JAVA程序员?希望大家踊跃讨论!!!!!
- 请教,Java GUI应用编程。
- Button的大小用什么方法设置
dfout.writeInt(i);//这样就可以了。解释:
'0'是一个字符,在程序当中,使用它的ASCII码。
'0'+i 结果,是一个整型的数据,他的值是字母0的ASCII码的值 再加上 i的值。
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;public class z_Data{
public static void main(String args[]){
try{
FileOutputStream fout=new FileOutputStream("out1.txt");
DataOutputStream dfout=new DataOutputStream(fout);
int i;
for(i=0;i<4;i++)
dfout.write(String.valueOf(i).getBytes());
// dfout.writeInt('0'+i);
dfout.close();
FileInputStream fin=new FileInputStream("out1.txt");
DataInputStream dfin=new DataInputStream(fin);
for(i=0;i<4;i++){
char a;
System.out.print((dfin.readByte()-'0')+",");
}
dfin.close();
}
catch(Exception e){
System.err.println("error occured:"+e);
e.printStackTrace();
}
}
}
我是蒙出來的· 對IO這迷糊的很~~
System.out.println('0'+i);
dfout.writeInt('0'+i);
}
'0'强制int后是48
这是个计算机基础,很重要。lz要理解。
ASCII码表
http://www.cnblogs.com/28088191/archive/2008/06/13/1220352.html for(i=0;i<4;i++){
char tmp='0';
System.out.println(tmp);
int intTmp=tmp;
System.out.println(intTmp);
System.out.println(intTmp+i);
dfout.writeInt(intTmp+i);
}
首先将dfout.writeInt('0'+i)变成dfout.writeInt(i),这样程序就没有问题了。至于为什么控制台中是0,1,2,3,但是文本中不能正常显示,这是因为你的文件是流文件,是不可读的,必须通过程序来解析,你的实例中就可以解析它。另外一个流文件的例子就是bmp,jpg,exe,dll文件等,你用文本编辑器打开什么都看不懂。那么如何做到程序中可以看,而且文本编辑器可以看,你就需要用另外两个类了,我把你的程序改了如下:import java.io.*;public class Test {
public static void main(String args[]){
try{
FileOutputStream fout=new FileOutputStream("c:/temp/out1.txt");
PrintStream dfout=new PrintStream(fout);
int i;
for(i=0;i<4;i++)
dfout.println(String.valueOf(i));
dfout.close();
FileInputStream fin=new FileInputStream("c:/temp/out1.txt");
BufferedReader br=new BufferedReader(new InputStreamReader(fin));
for(i=0;i<4;i++)
System.out.print(br.readLine()+",");
br.close();
}
catch(Exception e){
System.err.println("error occured:"+e);
e.printStackTrace();
}
}
}
BufferReader,BufferWriter,RandomAccessFile等等,弄得人真是糊涂啊。。感觉不都是经常用到吧。请教下常用的有哪几个?(比如C++常用的就是fstream)。。谢了。
1. 文件流 FileInputStream FileOutputStream
2. 数据流 (支持基本类型 String) DataInputStream DataOutputStream
3. 对象流 (读写对象) ObjectInputStream ObjectOutputStream
4. 逐行流 BufferedReader(后面是Reader是字符流,Stream是字节流) PrintStream
5. 转换流 InputStreamReader OutputStreamWriter