黑马程序员技术交流社区
标题:
关于目录的问题
[打印本页]
作者:
凡延海
时间:
2012-5-20 20:24
标题:
关于目录的问题
import java.io.*;
public class Copy{
public static void main(String[] args) throws Exception
{
copy();
}
public static void copy(){
InputStream ips=null;
OutputStream ops=null;
try
{ ips=new FileInputStream("d:\1.txt");
ops=new FileOutputStream("f:");
byte[] buf=new byte[1024];
int len=ips.read(buf);
ops.write(buf,0,len);
ips.close();
ops.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
我怎么不能把1.txt文件复制到e盘呢,我记得输出流往文件中写东西的时候可以不用制定文件,程序会自动生成的。那我的程序运行的时候怎么出错说找不到目录呢。
作者:
胥江
时间:
2012-5-20 20:45
首先有一行代码要修改成
ips=new FileInputStream("d:"+File.separator+"1.txt");
因为\在""中是转义字符,或者改成
ips=new FileInputStream("d:\\1.txt");
我记得输出流应该也要加上文件名吧,反正我是加上的。
作者:
许涛
时间:
2012-5-20 20:49
本帖最后由 许涛 于 2012-5-20 20:54 编辑
文件输出流的文件存放位置,你可以不写绝对路径,默认复制到当前文件夹,但是文件名是不能省略不写的, 还有反斜杠应该写成 \\
import java.io.*;
public class Copy{
public static void main(String[] args) throws Exception
{
copy();
}
public static void copy(){
InputStream ips=null;
OutputStream ops=null;
try
{
ips=new FileInputStream("d:\\1.txt");
ops=new FileOutputStream("f:\\2.txt");
byte[] buf=new byte[1024];
int len=ips.read(buf);
ops.write(buf,0,len);
ips.close();
ops.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
复制代码
作者:
Fc10232
时间:
2012-5-20 20:51
复制的前提有东西给你复制,最起码要有个路径 这个是必须的 有路径了系统才会判断里面的东西,才有下面的等等···········如果你所给的东西为null,那你复制又有什么意思呢 。是吧。。所以不但要指定路径 还要判断给出路径的文件是否为空
作者:
8161776
时间:
2012-5-20 20:53
本帖最后由 杨尧 于 2012-5-20 20:57 编辑
import java.io.*;
public class Copy{
public static void main(String[] args) throws Exception
{
copy();
}
public static void copy(){
InputStream ips=null;
OutputStream ops=null;
try
{ ips=new FileInputStream("d:\1.txt");//这里也不对头,java里\是转义字符,你想实现真正的\的话,必须\\这样才行,
ops=new FileOutputStream("f:");//这里不对,你必须写上文件名字,
ops=new FileOutputStream("f:\\1_copy.txt"); //这样才行
byte[] buf=new byte[1024];
int len=ips.read(buf);
ops.write(buf,0,len);
ips.close();
ops.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
复制代码
作者:
凡延海
时间:
2012-5-20 20:59
嗯,我查了一下API文档,看了看File,知道了separator与pathSeparator来表示路径,以后用这些更好,到哪里都可以运行。
作者:
彩虹
时间:
2012-5-20 21:22
ips=new FileInputStream("d:\1.txt");
ops=new FileOutputStream("f:");
问题就出在这两句,首先读取流中的目录必须用双反斜杠表示,才能被编译器识别,所以第一句再加一个反斜杠符号
往输出流文件中写数据,如果 文件不存在系统是会自己创建的,这种情况针对的是FileOutputStream ops=new FileOutputStream("f:\\a.txt");在代码中有a.txt这个文件,但实际上f盘中可以事先不创建该文件,当程序执行到这一句会自动创建该文件的。毕老师的视频中讲课关于文件的复制,这句话基本就是这种形式写的,而不写的是ops=new FileOutputStream("f:");连程序中都没有该虚拟文件的存在,又怎么能提示系统自动创建该文件呢?
再说ops.write(buf,0,len);write()方法是将数组buf中的字符是一个一个的逐个写入到目的文件中的,如果你在F盘事先没有创建目的文件,在代码中也没加虚拟的目的文件,那么读到的字符该往那写呢?直接写到一打开的F盘吗?不可能,你见过在F盘下不创建任何文件载体,就能直接写字符或打字吗?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2