有关输入输出流问题

nohacker1 2008-03-26 12:02:35
大家看看我输出的2结果代表的是什么意思我看不出来。。
比方说你想把一个文件里的东西复制到另一个文件里,首先你要在2个文件之间建立一个管道,就是那个流对象,而且2个文件也要换成流对象
比如复制1.txt里面内容到2.txt里,你要先 File in=new File("1.txt");File out=new File("2.txt");//把2个文件弄成流对象
然后再 FileinputStream file=new FileinputStream(in)//意思是建立一个管道,同时和文件1.txt相通了。
当调用 file.read()方法时,我不知道file.read方法到底干了什么,返回的又是什么,查API说 (从此输入流中读取一个数据字节。如果没有输入可用,则此方法将阻塞。返回值是 下一个数据字节;如果已到达文件末尾,则返回 -1。)我不明白什么意思,不如说1.txt里数据是 111 调用file.read方法时,读取一个数据字节,一个数据字节是不是就是1个1(也就是4个字节),返回值是下一个数据字节,下一个数据是1,转换为int型还是1,但是我试了下返回值是49,我很困惑。
希望大大们能给我个明示啊,看我哪个地方理解错误








import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
*
* @author 1
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws FileNotFoundException, IOException {
File f=new File("d:/1.txt");
FileInputStream in=new FileInputStream(f);
byte[] b=new byte[12];

System.out.print(b+" ");
int d=in.read(b);
System.out.print(d);
File f1=new File("d:/2.txt");
FileOutputStream file=new FileOutputStream(f1);
file.write(b);
// in.close();
// file.close();
// TODO code application logic here
}

}
...全文
100 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
junny9985 2008-04-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bootupnow 的回复:]
这里偷懒了,不过实际中,流最好套在BufferedInputStream, BufferedOutputStream中,这样操作更为优化
[/Quote]

恩用buffer读写操作速度更快
bootupnow 2008-03-26
  • 打赏
  • 举报
回复
这里偷懒了,不过实际中,流最好套在BufferedInputStream, BufferedOutputStream中,这样操作更为优化
bootupnow 2008-03-26
  • 打赏
  • 举报
回复
一个简单的例子,楼主参考一下,共同学习!

import java.io.*;
import javax.swing.*;

public class Main {

/**
* 一些文件操作
* @param inFilePath 读入的文件名
* @param outFilePath 写入的文件名
* @param append 是否附加在尾部
*/
public void doSomething(String inFilePath,String outFilePath,boolean append){
File fileIn = new File(inFilePath);
File fileOut = new File(outFilePath);
try {
FileInputStream fis = new FileInputStream(fileIn);
FileOutputStream fos = new FileOutputStream(fileOut,append);
byte[] b = new byte[1]; // 1个byte数组
while((fis.read(b)) != -1){ // 一个个的读字节
fos.write(b); // 一个个的写到输出流中
}
fos.close();
fis.close();
new JOptionPane().showMessageDialog(null, "操作完成!");
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
} catch(IOException ioe){
ioe.printStackTrace();
}

}

/**
* 选择打开文件
* @param title
* @return
*/
public String chooseFileOpen(String title){
JFileChooser chooser = new JFileChooser();
chooser.setDialogTitle(title);
int i = chooser.showOpenDialog(null);
if(i == JFileChooser.APPROVE_OPTION){
return chooser.getSelectedFile().getAbsolutePath();
}
else{
return "";
}
}

/**
* 设置保存文件
* @param title
* @return
*/
public String chooseFileSave(String title){
JFileChooser chooser = new JFileChooser();
chooser.setDialogTitle(title);
int i = chooser.showSaveDialog(null);
if(i == JFileChooser.APPROVE_OPTION){
return chooser.getSelectedFile().getAbsolutePath();
}
else{
return "";
}
}


public static void main(String[] args) {
// new Main().doSomething("D:/1.txt", "D:/2.txt", false);
Main test = new Main();
test.doSomething(test.chooseFileOpen("选择文件"),test.chooseFileSave("保存文件"), true);
}
}
nohacker1 2008-03-26
  • 打赏
  • 举报
回复
看见勒。。。太好了,我终于明白勒。谢谢2楼大大。。。。。。。。。
nohacker1 2008-03-26
  • 打赏
  • 举报
回复
看不家回复啊

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧