Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2060973
  • 博文数量: 178
  • 博客积分: 2076
  • 博客等级: 大尉
  • 技术积分: 2800
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-10 10:50
文章分类

全部博文(178)

文章存档

2010年(4)

2009年(13)

2008年(161)

我的朋友

分类: Java

2008-03-31 17:18:56

大家看看我输出的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 
    } 




30  回复
  • 等级:
发表于:2008-03-26 00:51:461楼 得分:0
一个简单的例子,楼主参考一下,共同学习!
Java code

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);
}
}


回复
  • 等级:
发表于:2008-03-26 00:53:492楼 得分:0
这里偷懒了,不过实际中,流最好套在BufferedInputStream, BufferedOutputStream中,这样操作更为优化

回复
  • 等级:
发表于:2008-03-26 08:06:163楼 得分:0
看不家回复啊

回复
  • 等级:
发表于:2008-03-26 08:12:464楼 得分:0
看见勒。。。太好了,我终于明白勒。谢谢2楼大大。。。。。。。。。
阅读(535) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~