Tag: uri

如何使用Java锚点启动文件协议URL?

在Java程序中,我需要在本地HTML文件上启动默认浏览器,指向文件中的锚点。 在Java SE 6中,java.awt.Desktop.browse方法将打开文件,但不会遵循锚点,因此类似下面的内容会在顶部打开文件,但不会将浏览器分页到锚点: Desktop.getDesktop(“file:///C:/foo/bar.html#anchor”); Sun在这里说http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6477862文件URI协议不支持锚点。 有没有人有更好的答案? 我可以使用Java SE 6.我可以使用仅限Windows的解决方案。

从内容URI获取目录路径

我正在使用SDK的ACTION_OPEN_DOCUMENT_TREE意图让用户选择一个目录。 这是代码: private static final int REQUEST_PICK_FOLDER = 1; // … @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_add_folder: { Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); startActivityForResult(intent, REQUEST_PICK_FOLDER); return true; default: return super.onOptionsItemSelected(item); } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_PICK_FOLDER && […]

创建SEO友好URI字符串的最佳方法

该方法应仅允许URI字符串中的“ 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ- ”字符。 制作好的SEO URI字符串的最佳方法是什么?

有没有正确的方法来构建URL?

在我使用的大部分代码中都有可怕的东西,比如: String url = “../Somewhere/SomeServlet?method=AMethod&id=”+object.getSomething()+ “&aParam=”+object.getSomethingElse()); 或者 – 更糟糕的是: String url = “Somewhere/Here/Something.jsp?path=”+aFile.toString().replace(“\\”,”/”)+ “&aParam=”+object.getSomethingElse()); 有没有正确的方法: 创建一个新URL(或者它是一个URI)。 向其添加正确的转义参数。 在这些参数中添加格式良好的文件路径。 将其解析为String。 从本质上讲 – 构建字符串要比正确地完成它太容易了。 有没有办法正确地做到这一点就像建立字符串一样简单? 添加 为了清楚起见 – 经过一番思考 – 我想我正在寻找类似的东西: String s = new MyThing() .setPlace(“Somewhere/Something.jsp”) .addParameter(aName,aValue) .addParameter(aName,aFile) .toString(); 因此,它将处理转义的所有不愉快,并添加“?”/“&”并将“\”更改为“/”而不是使用“\”作为文件等。 如果我必须自己编写一个(即如果Apache不是一个选项),那么有真正的Java技术可以正确地转义各个部分。 我的意思是在参数中将“”转换为“”。 而在其他地方逃避“%20”。

如何从uri确定文件的文件扩展名

假设我有一个URI,并且我想找到返回的文件的文件扩展名,我在Java中需要做什么。 例如, http : //www.daml.org/2001/08/baseball/baseball-ont上的文件是http://www.daml.org/2001/08/baseball/baseball-ont.owl 当我做 URI uri = new URI(address); URL url = uri.toURL(); String file = url.getFile(); System.out.println(file); 我无法看到扩展名为.owl的完整文件名,只是/2001/08/baseball/baseball-ont .owl /2001/08/baseball/baseball-ont我如何获得文件扩展名。 “

尝试使用fileProvider从assets文件夹打开PDF文件,但它给出FileNotFoundException:没有这样的文件或目录

我正在尝试显示存储在我的Android应用程序的资产文件夹中的“NEFT.pdf”文件。 以下代码在API 25之前完全正常 private void CopyReadAssets(String filename) { AssetManager assetManager = getAssets(); InputStream in = null; OutputStream out = null; File file = new File(getFilesDir(), filename); try { in = assetManager.open(filename); out = openFileOutput(file.getName(), Context.MODE_WORLD_READABLE); copyFile(in, out); in.close(); in = null; out.flush(); out.close(); out = null; Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType( Uri.parse(“file://” + getFilesDir() […]

用于apache httpclient 4的UNICODE中的URI编码

我正在使用apache http client 4进行所有的Web访问。 这意味着我需要做的每个查询都必须通过URI语法检查。 我尝试访问的其中一个站点使用UNICODE作为URL GET参数编码,即: http://maya.tase.co.il/bursa/index.asp?http://maya.tase.co.il/bursa/index.asp?view=search&company_group=147&srh_txt=%u05E0%u05D9%u05D1&arg_comp=&srh_from = 2009-06-01&srh_until = 2010-02-16&srh_anaf = -1&srh_event = 9999&is_urgent = 0&srh_company_press = (参数“srh_txt =%u05E0%u05D9%u05D1”在UNICODE中编码srh_txt =ניב) 问题是URI不支持UNICODE编码(它只支持UTF-8)这里真正的大问题是,这个站点期望它的序列是用UNICODE编码的,所以任何尝试使用String.format转换url( “ http://…srh_txt=%s& …”,URLEncoder.encode(“ניב”,“UTF8”))会产生一个合法的url,可用于构建URI但网站响应为它带有错误消息,因为它不是它所期望的编码。 顺便说一句,URL对象可以创建,甚至用于使用未转换的URL连接到网站。 有没有办法用非UTF-8编码创建URI? 有没有办法使用apache httpclient 4与常规URL(而不是URI)? 谢谢,Niv

java.net.URI仅针对查询字符串进行解析

我正在尝试使用JDK java.net.URI构建URI。 我想附加一个绝对URI对象,一个查询(在String中)。 例如: URI base = new URI(“http://example.com/something/more/long”); String queryString = “query=http://local:282/rand&action=aaaa”; URI query = new URI(null, null, null, queryString, null); URI result = base.resolve(query); 理论(或我认为)是决心应该回归: http://example.com/something/more/long?query=http://local:282/rand&action=aaaa 但我得到的是: http://example.com/something/more/?query=http://local:282/rand&action=aaaa 为什么#resolve() “吃”最后一条路? 如果新URI( query )构建为: URI query = new URI(null, null, base.getPath(), queryString, null); 它运作良好。

文件URI在解析操作期间删除主机名路径

我有一个资源已通过使用文件URL从Windows网络上的网络共享加载而打开,例如file:////remotemachine/my/path/spec.txt 。 此文件指定了我必须加载的另一个资源的路径。 我使用URI.resolve(String)方法为此资源创建URI。 这导致了一个问题,因为新创建的File资源不包含指示remotehost所必需的slahses。 代替 file:////remotemachine/my/path/data.dat 我明白了 file:///remotemachine/my/path/data.dat 丢失的斜杠表示文件正在尝试从资源不存在的本地计算机加载(路径也不是)。 如果我使用IP地址而不是机器名称,这会做同样的事情。 如果我使用映射文件名,例如file:///M:/path/spec.txt则资源文件正确解析为file:///M:/path/data.dat 。 此外,如果我使用http协议路径,URI会正确解析。 如果这是Java中的错误,任何人都可以确定我是否有再次解析文件URI的误解? 相关的代码部分 private Tile(URI documentBase, XPath x, Node n) throws XPathExpressionException, IOException { String imagePath = (String) x.evaluate(“FileName”, n, XPathConstants.STRING); this.imageURL = documentBase.resolve(imagePath).toURL(); } 更新 我想出了解决问题的方法 private Tile(URI documentBase, XPath x, Node n) throws XPathExpressionException, IOException { boolean isRemoteHostFile = documentBase.getScheme().equals(“file”) […]

为什么Java会自动解码URI编码文件名中的%2F?

我有一个servlet,需要写出具有用户可配置名称的文件。 我正在尝试使用URI编码来正确转义特殊字符,但JRE似乎会自动将编码的正斜杠%2F转换为路径分隔符。 例: File dir = new File(“C:\Documents and Setting\username\temp”); String fn = “Top 1/2.pdf”; URI uri = new URI( dir.toURI().toASCIIString() + URLEncoder.encoder( fn, “ASCII” ).toString() ); File out = new File( uri ); System.out.println( dir.toURI().toASCIIString() ); System.out.println( URLEncoder.encode( fn, “ASCII” ).toString() ); System.out.println( uri.toASCIIString() ); System.out.println( output.toURI().toASCIIString() ); 输出是: file:/C:/Documents%20and%20Settings/username/temp/ Top+1%2F2.pdf file:/C:/Documents%20and%20Settings/username/temp/Top+1%2F2.pdf file:/C:/Documents%20and%20Settings/username/temp/Top+1/2.pdf 在实例化新的File对象之后, […]