导航:首页 > 编程语言 > fileurljava

fileurljava

发布时间:2022-11-28 13:12:55

1. java.io.File.File 能否按照一个URL创建文件

  1. 首先,File是可以用url形式的。

    一般File file = new File(url);

    或者File file = new URL(url).getFile();

  2. 用Url和直接使用本地文件有些地方要注意的,

    a.你要写对Url,看你的url感觉就不对,你把这个Url粘到浏览器看有没有下载就知道对不对了

    b.或许你要用的文件不是http方式提供的,那就应该写成\192.168.1.2 mp.txt的方式,你可以在资源管理器(文件系统)的地址那粘上这个地址(去掉文件名的路径)看能不能找到文件


2. 用Java实现获取文件类型的方法。

主要以下几种方法:

这个MimetypesFileMap类会映射出一个file的Mime Type,这些Mime Type类型是在activation.jar包里面的资源文件中定义的

importjavax.activation.MimetypesFileTypeMap;
importjava.io.File;

classGetMimeType{
publicstaticvoidmain(Stringargs[]){
Filef=newFile("test.gif");
System.out.println("MimeTypeof"+f.getName()+"is"+
newMimetypesFileTypeMap().getContentType(f));
//expectedoutput:
//"MimeTypeoftest.gifisimage/gif"
}
}

使用 java.net.URL
警告:这个方法非常慢
与上面所说的匹配后缀名类似。后缀名和mime-type的映射关系被定义在[jre_home]libcontent-types.properties这个文件中

importjava.net.*;

publicclassFileUtils{
publicstaticStringgetMimeType(StringfileUrl)
throwsjava.io.IOException,MalformedURLException
{
Stringtype=null;
URLu=newURL(fileUrl);
URLConnectionuc=null;
uc=u.openConnection();
type=uc.getContentType();
returntype;
}

publicstaticvoidmain(Stringargs[])throwsException{
System.out.println(FileUtils.getMimeType("file://c:/temp/test.TXT"));
//output:text/plain
}
}

还有一种方式:就是取文件名最后一个“.”后的内容,通过人来判断如

String fileName = "aaa.txt";

String fileType =“txt”//通过方法取出方法类型为

String type = "";

if( fileTyep.equals("txt")){

type = "记事本";

}else if(fileTyep.equals("img")){

type = "img图片";

}。。。。。

3. Java中可以使用URL定位到本地的某个文件吗

可以的,直接通过URL类实现即可。
举例:URL fileUrl = new URL("file:///E:/tmp/test.txt");
备注:引入的是“java.net.URL“类。

4. java 怎么使用远程 url 创建 file

importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileReader;

/**
*@authorlmq
*
*/
publicclassRemoteFile{

publicstaticvoidmain(String[]args)throwsException{
FileremoteFile=newFile("//192.168.7.146/test/1.txt");//192.168.7.146是对方机器IP,test是对方那个共享文件夹名字,如果没有共享是访问不到的
//远程文件其实主要是地址,地址弄对了就和本地文件没什么区别,windows里面//或者\\开头就表示这个文件是网络路径了其实这个地址就像我们再windows里面,点击开始
//然后点击运行,然后输入\192.168.7.146/test/1.txt访问远程文件一样的

BufferedReaderbr=newBufferedReader(newFileReader(remoteFile));
Stringstr;
while((str=br.readLine())!=null){
System.out.println(str);
}
br.close();
}
}

如果是非共享文件 你只能通过url读取流来生成了

publicvoiddownUrlTxt(StringfileName,StringfileUrl,StringdownPath){
FilesavePath=newFile(downPath);
if(!savePath.exists()){
savePath.mkdir();
}
String[]urlname=fileUrl.split("/");
intlen=urlname.length-1;
Stringuname=urlname[len];//获取文件名
try{
Filefile=newFile(savePath+"/"+uname);//创建新文件
if(file!=null&&!file.exists()){
file.createNewFile();
}
OutputStreamoputstream=newFileOutputStream(file);
URLurl=newURL(fileUrl);
HttpURLConnectionuc=(HttpURLConnection)url.openConnection();
uc.setDoInput(true);//设置是否要从URL连接读取数据,默认为true
uc.connect();
InputStreamiputstream=uc.getInputStream();
System.out.println("filesizeis:"+uc.getContentLength());//打印文件长度
byte[]buffer=newbyte[4*1024];
intbyteRead=-1;
while((byteRead=(iputstream.read(buffer)))!=-1){
oputstream.write(buffer,0,byteRead);
}
oputstream.flush();
iputstream.close();
oputstream.close();
}catch(Exceptione){
System.out.println("读取失败!");
e.printStackTrace();
}
System.out.println("生成文件路径:"+downPath+fileName);
}

5. java中url转file的问题


publicFile(URIuri)
通过将给定的file:URI转换为一个抽象路径名来创建一个新的File实例。
file:URI的具体形式与系统有关,因此,由此构造方法执行的转换也与系统有关。
对于某个给定抽象路径名f,可以保证:
newFile(f.toURI()).equals(f.getAbsoluteFile())只要原始抽象路径名、URI
和新抽象路径名都是在同一Java虚拟机(或者它的不同调用)中创建的。但是,当在某一操作系统上的虚拟机中创建的file:URI
在不同操作系统上的虚拟机中被转换为抽象路径名时,这种关系通常是不成立的。
参数:
uri-一个绝对分层URI,由一个等于"file"的scheme、非空的path
组件,以及未定义的authority、query和fragment组件组成

6. java中如何实现URL类

java中实现URL类,可以使用java工具类中的URL的类,实例如下:

importjava.io.*;
importjava.net.*;
publicclassURLTest
{
publicstaticvoidmain(String[]args)
{
try
{
URLurl=newURL("http://sports.163.com:80/nba/");//创建资源类型
Stringprotocol=url.getProtocol();//获取资源类型
Stringhost=url.getHost();//获取域名
intport=url.getPort();//获取端口
Stringfile=url.getFile();//获取路径
System.out.println("url地址的资源类型为:"+protocol+"域名为:"+host+"端口为:"+port+"路径为:"+file);
InputStreamis=url.openStream();//获取页面信息流
BufferedReaderbfr=newBufferedReader(newInputStreamReader(is));//封装成字符流
Stringlen;
while((len=bfr.readLine())!=null)
{
System.out.println(len);
}
bfr.close();
is.close();
}
catch(MalformedURLExceptione)
{
System.out.println("创建URL对象发生异常");
}
catch(IOExceptione)
{
System.out.println("发生IO操作异常");
}
}
}

7. 我有一段java http下载的代码,但是我很多地方读不懂,帮我谢谢注释

package API;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLDecoder;
import Get.Other_API.*;
public class DownFile implements Runnable
{

private String LOCAL_PATH="d:/";
private String Down_Path=null;
//下面两个是Down_Path的get和set的方法
public String getDown_Path() { return Down_Path;}
public void setDown_Path(String downPath) {Down_Path=downPath;}
public String getPath() { return LOCAL_PATH; }
public void setPath(String Path) {LOCAL_PATH=Path;}

public void DownNow()
{
//待下载文件地址
String fileUrl=getDown_Path();
InputStream in=null;
OutputStream out=null;
HttpURLConnection conn=null;
String fileName=null;
int count=0;
int finished=0;
int _temp=0;
try
{
//初始化连接
URL url=new URL(fileUrl);//将String类型的地址变为url对象
conn = (HttpURLConnection) url.openConnection();//开启连接
conn.setDoInput(true);//必要的,开启输入输出的设置
conn.setDoOutput(true);
//获取文件名
String disposition=conn.getHeaderField("Content-Disposition");
if(disposition!=null&&!"".equals(disposition))
{
//从头中获取文件名
fileName=disposition.split(";")[1].split("=")[1].replaceAll("\"","");
}
else
{
//从地址中获取文件名
fileName=fileUrl.substring(fileUrl.lastIndexOf("/")+1);
}
if(fileName!=null&&!"".equals(fileName))
{
//文件名解码
fileName=URLDecoder.decode(fileName, "utf-8");
}
else
{
System.out.println("Error");
//如果无法获取文件名,则随机生成一个
//fileName="file_"+(int)(Math.random()*10);
}
//读取数据
if(conn.getResponseCode()==HttpURLConnection.HTTP_OK)
{
//这种方法比较常用,得记住
byte[] buffer=new byte[2048];
in = conn.getInputStream();//获取文本的输入流
out=new FileOutputStream(new File(LOCAL_PATH,fileName));//确定输出的地方
int size=conn.getContentLength();
while((count=in.read(buffer))!=-1)//不断循环,每次读取2048比特的数据
{
if(count!=0)
{
out.write(buffer,0,count);//将count大小的数据写进去
finished+=count;//结尾的写入的位置改变,为下次写入做准备
if(_temp%500==0)
{
System.out.printf("下载已完成---->%1$.2f%%\n",(double)finished/size*100);//动态输出下载的进度
_temp=0;
}
_temp++;
}
else
{
break;
}
}
}
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
out.close();//关闭输出流
in.close();//关闭输入流
conn.disconnect();//关闭连接,有打开就有关闭
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
//因为该类实现了Runnable接口,所以得实现这个run方法
@Override
public void run() {
// TODO Auto-generated method stub
DownNow();//调用上面的DownNow方法
}
}

8. java获取服务器文件,怎样用url返回

下面提供二种方法会使用java发送url请求,并获取服务器返回的值

第一种方法:
代码如下:

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.util.EntityUtils;

(StringurlStr,Stringparam1,Stringparam2)throwsException{
StringtempStr=null;
HttpClienthttpclient=newDefaultHttpClient();
Propertiesproperties=newProperties();
HttpEntityentity=null;
StringxmlContent="";
try
{

//设置超时时间
httpclient.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,20000);
httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,20000);

//封装需要传递的参数
List<NameValuePair>nvps=newArrayList<NameValuePair>();
nvps.add(newBasicNameValuePair("mainMemoCode",strmainMemoCode));
nvps.add(newBasicNameValuePair("recordPassWord",strrecordPassWord));
//客户端的请求方法类型
HttpPosthttpPost=newHttpPost(urlStr);
httpPost.setEntity(newUrlEncodedFormEntity(nvps,"GBK"));
HttpResponseresponse=httpclient.execute(httpPost);

//获取服务器返回Http的Content-Type的值
tempStr=response.getHeaders("Content-Type")[0].getValue().toString();

//获取服务器返回页面的值
entity=response.getEntity();
xmlContent=EntityUtils.toString(entity);
Stringstrmessage=null;
System.out.println(xmlContent);
System.out.println(response.getHeaders("Content-Type")[0].getValue().toString());
httpPost.abort();

}
catch(SocketTimeoutExceptione)
{
}
catch(Exceptionex)
{
ex.printStackTrace();
}
finally{
httpclient.getConnectionManager().shutdown();
}
第二种方法:

代码如下:


(StringurlStr,Stringparam1,Stringparam2)throwsException{

HttpURLConnectionurl_con=null;
try{
URLurl=newURL(urlStr);
StringBufferbankXmlBuffer=newStringBuffer();
//创建URL连接,提交到数据,获取返回结果
HttpURLConnectionconnection=(HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("User-Agent","directclient");

PrintWriterout=newPrintWriter(newOutputStreamWriter(connection.getOutputStream(),"GBK"));
out.println(param);
out.close();
BufferedReaderin=newBufferedReader(newInputStreamReader(connection
.getInputStream(),"GBK"));

StringinputLine;

while((inputLine=in.readLine())!=null){
bankXmlBuffer.append(inputLine);
}
in.close();
tempStr=bankXmlBuffer.toString();
}
catch(Exceptione)
{
System.out.println("发送GET请求出现异常!"+e);
e.printStackTrace();

}finally{
if(url_con!=null)
url_con.disconnect();
}

returntmpeStr;
}

总结:多练习代码,熟练之后才能更快速的去了解代码的学习的方法。多去获取一些思维方面的书籍可以看看。

9. 如何用java程序实现上传文件到指定的URL地址

参考代码如下:
import java.io.*;
/**
* 复制文件夹或文件夹
*/
public class CopyDirectory {
// 源文件夹
static String url1 = "f:/photos";
// 目标文件夹
static String url2 = "d:/tempPhotos";
public static void main(String args[]) throws IOException {
// 创建目标文件夹
(new File(url2)).mkdirs();
// 获取源文件夹当前下的文件或目录
File[] file = (new File(url1)).listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isFile()) {
// 复制文件
File(file[i],new File(url2+file[i].getName()));
}
if (file[i].isDirectory()) {
// 复制目录
String sourceDir=url1+File.separator+file[i].getName();
String targetDir=url2+File.separator+file[i].getName();
Directiory(sourceDir, targetDir);
}
}
}
// 复制文件
public static void File(File sourceFile,File targetFile)
throws IOException{
// 新建文件输入流并对它进行缓冲
FileInputStream input = new FileInputStream(sourceFile);
BufferedInputStream inBuff=new BufferedInputStream(input);

// 新建文件输出流并对它进行缓冲
FileOutputStream output = new FileOutputStream(targetFile);
BufferedOutputStream outBuff=new BufferedOutputStream(output);

// 缓冲数组
byte[] b = new byte[1024 * 5];
int len;
while ((len =inBuff.read(b)) != -1) {
outBuff.write(b, 0, len);
}
// 刷新此缓冲的输出流
outBuff.flush();

//关闭流
inBuff.close();
outBuff.close();
output.close();
input.close();
}
// 复制文件夹
public static void Directiory(String sourceDir, String targetDir)
throws IOException {
// 新建目标目录
(new File(targetDir)).mkdirs();
// 获取源文件夹当前下的文件或目录
File[] file = (new File(sourceDir)).listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isFile()) {
// 源文件
File sourceFile=file[i];
// 目标文件
File targetFile=new
File(new File(targetDir).getAbsolutePath()
+File.separator+file[i].getName());
File(sourceFile,targetFile);
}
if (file[i].isDirectory()) {
// 准备复制的源文件夹
String dir1=sourceDir + "/" + file[i].getName();
// 准备复制的目标文件夹
String dir2=targetDir + "/"+ file[i].getName();
Directiory(dir1, dir2);
}
}
}
}

阅读全文

与fileurljava相关的资料

热点内容
大地影城今日影讯时间表 浏览:788
索尼的安卓10怎么样 浏览:968
程序员为什么喊命苦 浏览:740
服务器现在什么语言开发最多 浏览:16
法国啄木鸟影片名字叫什么 浏览:416
vboxandroidx86 浏览:290
地底世界 小说 浏览:365
单片机不包括 浏览:783
肉文有声 浏览:404
付费的片 浏览:783
编译阶段文件分为 浏览:97
数控编程大小头怎样调 浏览:683
单片机技术及工程实践 浏览:172
用手机编程用什么软件 浏览:916
看岛国片网址 浏览:420
男主叫叶天的小说 浏览:378
jdk目录下的文件夹 浏览:951
好看的带颜色的现代小说 浏览:699
怎么看app什么时候更新 浏览:220
各银行的官方app是什么 浏览:782