文件流是路径|文件流怎么获取网络路径

文件流是路径|文件流怎么获取网络路径的第1张示图

⑴ io流中的相对路径和绝对路径是怎么理解

File类是用来构造文件或文件夹的类,在其构造函数中要求传入一个String类型的参数,用于指示文件所在的路径.以前一直使用绝对路径作为参数,其实这里也可以使用相对路径.使用绝对路径不用说,很容易就能定位到文件,那么使用了相对路径jvm如何定位文件的呢?按照jdk Doc上的说法”绝对路径名是完整的路径名,不需要任何其他信息就可以定位自身表示的文件。相反,相对路径名必须使用来自其他路径名的信息进行解释。默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名。此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录.”相对路径顾名思义,相对于某个路径,那么究竟相对于什么路径我们必须弄明白.按照上面jdk文档上讲的这个路径是”当前用户目录”也就是”java虚拟机的调用目录”.更明白的说这个路径其实是我们在哪里调用jvm的路径.举个例子:假设有一java源文件Example.java在d盘根目录下,该文件不含package信息.我们进入命令行窗口,然后使用”d:”命令切换到d盘根目录下,然后用”javac Example.java”来编译此文件,编译无错后,会在d盘根目录下自动生成”Example.class”文件.我们在调用”java Example”来运行该程序.此时我们已经启动了一个jvm,这个jvm是在d盘根目录下被启动的,所以此jvm所加载的程序中File类的相对路径也就是相对这个路径的,即d盘根目录:D:\.同时” 当前用户目录”也是D:\.在System.getProperty(“user.dir”);系统变量”user.dir”存放的也是这个值.我们可以多做几次试验,把”Example.class”移动到不同路径下,同时在那些路径下,执行”java Example”命令启动jvm,我们会发现这个”当前用户目录”是不断变化的,它的路径始终和我们在哪启动jvm的路径是一致的.搞清了这些,我们可以使用相对路径来创建文件,例如:File file = new File(“a.txt”);File.createNewFile();假设jvm是在”D:\”下启动的,那么a.txt就会生成在D:\a.txt;此外,这个参数还可以使用一些常用的路径表示方法,例如”.”或”.\”代表当前目录,这个目录也就是jvm启动路径.所以如下代码能得到当前目录完整路径:File f = new File(“.”);String absolutePath = f.getAbsolutePath();System.out.println(absolutePath);//D:\最后要说说在eclipse中的情况:Eclipse中启动jvm都是在项目根路径上启动的.比如有个项目名为blog,其完整路径为:D:\work\IDE\workspace\blog.那么这个路径就是jvm的启动路径了.所以以上代码如果在eclipse里运行,则输出结果为” D:\work\IDE\workspace\blog.”Tomcat中的情况.如果在tomcat中运行web应用,此时,如果我们在某个类中使用如下代码:File f = new File(“.”);String absolutePath = f.getAbsolutePath();System.out.println(absolutePath);那么输出的将是tomcat下的bin目录.我的机器就是” D:\work\server\jakarta-tomcat-5.0.28\bin\.”,由此可以看出tomcat服务器是在bin目录下启动jvm的.其实是在bin目录下的” catalina.bat”文件中启动jvm的.

⑵ 什么是内存流和文件流

文件流 FileStream继承与Stream类,一个FileStream类的实例实际上代表一个文件流,使用FileStream类可以对文件系统上是文件进行读取、写入、打开和关闭操作。与ioStream、sStream共同作为头文件构成IO标准库。

内存流 MemoryStream表示的是保存在内存中的数据流,由内存流封装的数据可以在内存中直接访问。内存一般用于暂时缓存数据以降低应用程序对临时缓冲区和临时文件的需要。

引入内存流是因为内存流和字节数组虽然都位于程序缓冲区,但是具有不同特性。内存流相对于字节数组而言,具有流特有的特性,并且容量可自动增长,在数据加密以及对长度不定的数据进行缓存等场合,使用内存流比较方便。

(2)文件流是路径扩展阅读:

MemoryStream有多种构造函数如下:

1、public MemoryStream();该构造函数初始分配的容量大小为0,随着数据的不断写入,其容量可以不断地自动扩展。

2、public MemoryStream(byte[] buffer);根据字节数组buffer初始化,实例的容量大小规定为字节数组的长度。

3、public MemoryStream(int capacity);容量固定为capacity。

⑶ 什么是流它与文件之间的关系如何

文件(File)和流(Stream)是既有区别又有联系的两个概念。 文件是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。 特性:每个文件都有文件名、文件所在路径、创建时间及访问仅限等属性。———————————————————————————————————————————————————————————————— 流是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。 存储介质:除了和磁盘文件直接相关的文件流以外,流还有多种类型。流可以分布在网络中、内存中或者是磁带中。

⑷ 编程:windows是通过文件流来操作文件的吧,如点击某个文件,系统是通过什么代码来获取此文件的路径的

如果直接需要从windows里点击某个文件来操作的话,需要学习windows shell开发。C++ 语言的。没有C#..比如扩展文件右键。

⑸ mac系统,java编程中文件流的路径是如何写的

看看这个,我昨天刚写的: import java.io.BufferedOutputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.IOException;import java.io.PrintWriter;import java.util.Scanner;public class AddList {private String filePath = "";private String bakPath = "";private String content = "";Scanner sc = new Scanner(System.in);public String readFile(){content = "";if (isNull(filePath)) {System.out.println("文件存储路径:");filePath = sc.nextLine();}File file = new File(filePath);FileReader fr = null;try {if (file.exists()) {fr = new FileReader(file);char[] chars = new char[1024];int n = 0;while((n = fr.read(chars)) != -1){String string = new String(chars, 0, n);content = content + string;}} else {System.out.println("文件不存在");}} catch (Exception e) {e.printStackTrace();} finally {if (fr != null) {try {fr.close();} catch (IOException e) {e.printStackTrace();}}}return content;}public void writeFile(String path){File file = new File(path);FileOutputStream fos = null;mkDirs(path);try {fos = new FileOutputStream(file);BufferedOutputStream bos = new BufferedOutputStream(fos);PrintWriter pw = new PrintWriter(bos, true);pw.print(content);pw.flush();} catch (FileNotFoundException e) {e.printStackTrace();} finally {if (fos != null) {try {fos.close();} catch (IOException e) {e.printStackTrace();}}}}public void writeFile(){if (isNull(filePath)) {System.out.println("文件存储路径:");filePath = sc.nextLine();}File file = new File(filePath);FileOutputStream fos = null;mkDirs(filePath);try {fos = new FileOutputStream(file);BufferedOutputStream bos = new BufferedOutputStream(fos);PrintWriter pw = new PrintWriter(bos, true);pw.print(content);pw.flush();} catch (FileNotFoundException e) {e.printStackTrace();} finally {if (fos != null) {try {fos.close();} catch (IOException e) {e.printStackTrace();}}}}public void mkDirs(String filepath){if (filepath.indexOf("\\") != -1) {filepath = filepath.replaceAll("\\", "/");}int n = filepath.indexOf("//");String path = filepath.substring(0, n) + "//";filepath = filepath.substring(filepath.indexOf("//") + 1, filepath.length());String[] files = filepath.split("/");for (int i = 0; i < files.length – 1; i++) {path = path + files[i];File file = new File(path);if (!file.exists()) {file.mkdir();}}}public void addImfor(){System.out.println("——–增加记录———");String name = "";String tel = "";String email = "";content = readFile();while(true){System.out.println("姓名:");name = sc.next();System.out.println("电话:");tel = sc.next();System.out.println("Email:");email = sc.next();content = content + name + "<>" + tel + "<>" + email +"<==>";System.out.println("0、Exit 1、继续");int i = sc.nextInt();if (i == 0) {break;}}writeFile();}public void deleteImfor(){System.out.println("———删除记录———");String name = "";String[] imfors = null;content = readFile();while(true){System.out.println("你要删除的姓名是:");name = sc.next();if (content.indexOf(name) != -1) {imfors = content.split("<==>");for (int i = 0; i < imfors.length; i++) {if (imfors[i].indexOf(name) != -1) {imfors[i] = "";}}content = "";for (int i = 0; i < imfors.length; i++) {if (!isNull(imfors[i])) {content = content + imfors[i] + "<==>";}}writeFile();System.out.println("删除成功");} else {System.out.println("此人不存在");}System.out.println("0、Exit 1、继续");int i = sc.nextInt();if (i == 0) {break;}}}public void viewAll(){System.out.println("———-显示所有————");content = readFile();if (!isNull(content)) {String[] imfors = content.split("<==>");System.out.println("姓名\t电话\tEmail");for (int i = 0; i < imfors.length; i++) {String[] imfor = imfors[i].split("<>");for (int j = 0; j < imfor.length; j++) {System.out.print(imfor[j] + "\t");}System.out.println();}} else {System.out.println("暂时还没有记录");}}public void queryImfor(){System.out.println("———-查找记录———–");content = readFile();if (!isNull(content)) {String result = "";String[] imfors = null;String[] imfor = null;String name = "";boolean bool = false;while(true){result = "";System.out.println("请输入关键字(按姓名查找):");name = sc.next();bool = false;if (content.indexOf(name) != -1) {imfors = content.split("<==>");for (int i = 0; i < imfors.length; i++) {if (imfors[i].indexOf(name) != -1) {imfor = imfors[i].split("<>");if (imfor[0].equals(name)) {bool = true;result = result + imfors[i] + "<==>";}}}if (bool) {imfors = result.split("<==>");System.out.println("姓名\t电话\tEmail");for (int i = 0; i < imfors.length; i++) {imfor = imfors[i].split("<>");for (int j = 0; j < imfor.length; j++) {System.out.print(imfor[j] + "\t");}System.out.println();}} else {System.out.println("无此人信息");}} else {System.out.println("无此人信息");}System.out.println("0、Exit 1、继续");int i = sc.nextInt();if (i == 0) {break;}}} else {System.out.println("文件还没有记录");}}public void (){System.out.println("———-备份———–");content = readFile();if (isNull(bakPath)) {System.out.println("备份全路径:");bakPath = sc.next();}writeFile(bakPath);System.out.println("备份成功");}public boolean isNull(String string){if (null == string || "" == string || 0 == string.length()) {return true;} else {return false;}}public static void main(String[] args) {AddList add = new AddList();Scanner sc = new Scanner(System.in);int operater = 0;while(true){System.out.println("选择功能:\n1、增加记录 2、删除记录 3、显示所有 4、查询记录 5、备份 6、退出");operater = sc.nextInt();if (1 == operater) {add.addImfor();} else if (2 == operater) {add.deleteImfor();} else if (3 == operater) {add.viewAll();} else if (4 == operater) {add.queryImfor();} else if (5 == operater) {add.();} else if (6 == operater) {System.out.println("谢谢使用");break;}}}}

⑹ C++中输入流文件路径说明

fin.open("c:\\Documents and Settings\\1.txt");全路径+文件名不过注意在微软WINDOWS系统中目录分隔符用\\而LINUX/UNIX目录分隔符用/

⑺ C++的文件输入输出流如何设置输出路径

constchar*fileName="C:\helloworld\test.txt";ofstreamofs(fileName);if(!ofs){cout<<"Cannotopenfile.";return1;}ofs<<10<<""<<123.23<<"";ofs<<"Thisisatext.";ofs.close();

⑻ java文件上传时,web客户端选择文件后发送请求到后台。可是web客户端发送到后台的是文件路径还是文件流

当然直接传递文件流。你说的那种情况是传递请求参数。当然你也可以根据请求的参数拿到这个路径,你还得根据这个路径发送请求给客户端,然后读取这个文件,这不很麻烦吗?

⑼ 文件流怎么获取网络路径

在请求头里设置Range,可以拿到不同的部分,前提还需要webserver支持。 /***开始下载*@throwsException*/publicvoidstartDown()throwsException{HttpClienthttpClient=newDefaultHttpClient();try{//获取下载文件信息getDownloadFileInfo(httpClient);//启动多个下载线程startDownloadThread();//开始监视下载数据monitor();}catch(Exceptione){throwe;}finally{httpClient.getConnectionManager().shutdown();}}/***获取下载文件信息*/(HttpClienthttpClient)throwsIOException,ClientProtocolException,Exception{HttpHeadhttpHead=newHttpHead(url);HttpResponseresponse=httpClient.execute(httpHead);//获取HTTP状态码intstatusCode=response.getStatusLine().getStatusCode();if(statusCode!=200)thrownewException(“资源不存在!”);if(getDebug()){for(Headerheader:response.getAllHeaders()){System.out.println(header.getName()+”:”+header.getValue());}}//Content-LengthHeader[]headers=response.getHeaders(“Content-Length”);if(headers.length>0)contentLength=Long.valueOf(headers[0].getValue());httpHead.abort();httpHead=newHttpHead(url);httpHead.addHeader(“Range”,”bytes=0-“+(contentLength-1));response=httpClient.execute(httpHead);if(response.getStatusLine().getStatusCode()==206){acceptRanges=true;}httpHead.abort();}/***启动多个下载线程*@throwsIOException*@throwsFileNotFoundException*/()throwsIOException,FileNotFoundException{//创建下载文件Filefile=newFile(localPath);file.createNewFile();RandomAccessFileraf=newRandomAccessFile(file,”rw”);raf.setLength(contentLength);raf.close();//定义下载线程事件实现类=newDownloadThreadListener(){publicvoidafterPerDown(DownloadThreadEventevent){//下载完一个片段后追加已下载字节数synchronized(object){DownloadTask.this.receivedCount+=event.getCount();}}publicvoiddownCompleted(DownloadThreadEventevent){//下载线程执行完毕后从主任务中移除threads.remove(event.getTarget());if(getDebug()){System.out.println(“剩余线程数:”+threads.size());}}};//不支持多线程下载时if(!acceptRanges){if(getDebug()){System.out.println(“该地址不支持多线程下载”);}//定义普通下载DownloadThreadthread=newDownloadThread(url,0,contentLength,file,false);thread.addDownloadListener(listener);thread.start();threads.add(thread);return;}//每个请求的大小longperThreadLength=contentLength/threadCount+1;longstartPosition=0;longendPosition=perThreadLength;//循环创建多个下载线程do{if(endPosition>=contentLength)endPosition=contentLength-1;DownloadThreadthread=newDownloadThread(url,startPosition,endPosition,file);thread.addDownloadListener(listener);thread.start();threads.add(thread);startPosition=endPosition+1;//此处加1,从结束位置的下一个地方开始请求endPosition+=perThreadLength;}while(startPosition<contentLength);}

未经允许不得转载:山九号 » 文件流是路径|文件流怎么获取网络路径

赞 (0)