【问题标题】:Reading a file over a network path通过网络路径读取文件
【发布时间】:2012-05-02 15:21:43
【问题描述】:

我在使用时遇到了这个奇怪的问题

File FileToRead = new File("\\\\MYSERVER\\MYFOLDER\\MYFOLDER\\MYPICTURE.JPG");

通过网络读取文件,我得到的只是一个空指针异常。通常,本地路径适用于此,但在网络路径上时,我无法使其正常工作。有什么想法吗?

PS:哦,我的网络连接似乎可以正常工作,在 Windows 资源管理器中访问数据时没有问题...

更多代码:

File FileToRead = new File("file://DOKSERVICE/Somefolder/ProductImage/01001.JPG");
//File FileToRead = new File("c:\\dog.jpg"); local test
BufferedImage image = ImageIO.read(FileToRead);
BufferedImage resizedimage = new BufferedImage(260, 260,BufferedImage.TYPE_INT_RGB ); 
Graphics2D g = resizedimage.createGraphics();  
g.drawImage(image, 0, 0, 260, 260, null);  
g.dispose(); 
picture.setIcon(new ImageIcon(image));

【问题讨论】:

  • 我猜这与案件有关。您的完整路径是否完全如此,全部大写? Windows 不区分大小写。 Java 不需要。
  • 您能否发布实际导致错误或导致空引用的代码?在任何 Java 平台上,您列出的行都不应该为空。
  • 您确定您的 UNC 引用指向 share 而不是文件夹,例如 \\\\MYSERVER\\SHARENAME\\FOLDER\\FOLDER\\MYPICTURE。 JPG。如果上面示例的第二部分确实是文件夹名称,而不是共享,则引用将无法解析。

标签: java file-io


【解决方案1】:

只需将文件路径指定为 URI:

File FileToRead = new File(new URI("file://MYSERVER/MYFOLDER/MYFOLDER/MYPICTURE.JPG"));

EDIT 请注意,该字符串是一个 URI!它不能包含空格,因此您必须将它们替换为“%20”才能使其正常工作。

【讨论】:

  • 试了一下,得到:javax.imageio.IIOException: Can't read input file! :(
  • @Sin5k4 你能把文件路径贴在这里吗?如果可能,您使用的确切那个。
  • 路径为:String filepath = "file:\\\\DOKSERVICE\\Dokumaortak\\ProductImage\\"+generatefilename+".JPG";
  • generatedfilename 是否包含一些应该编码的字符?使用正斜杠而不是反斜杠它不起作用?
  • 它只是这样做了:generatefilename=generatefilename.replace("/", "_");刚刚通过调试器检查它似乎正常生成它,看起来这是一个解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 2011-01-03
  • 2012-03-03
  • 2010-12-06
相关资源
最近更新 更多