大家看看我输出的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
} }
比方说你想把一个文件里的东西复制到另一个文件里,首先你要在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
} }
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);
}
}
恩用buffer读写操作速度更快