Вопрос по java, file-io – Чтение файла по сетевому пути

12

У меня есть эта странная проблема, когда я использую

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

чтобы прочитать файл по сети, все, что я получаю, это исключение нулевого указателя. Обычно с этим работает локальный путь, но когда он находится в сети, мне просто не удается заставить его работать. Есть идеи?

PS: о, и мое сетевое подключение, кажется, работает, никаких проблем при доступе к данным в Windows Explorer ...

Больше кода:

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 регистр не учитывается. Ява не должна быть. adarshr
Можете ли вы опубликовать код, который на самом деле вызывает ошибку или приводит к нулевой ссылке? Строка, которую вы перечислили, никогда не должна быть нулевой на любой платформе Java. maerics
Вы уверены, что ваши UNC ориентиры наshare а не в папку, например \\\\ MYSERVER \\ SHARENAME \\ FOLDER \\ FOLDER \\ MYPICTURE.JPG. Если вторая часть вашего примера выше действительно является именем папки, а не общим ресурсом, ссылка не будет разрешена. David W

Ваш Ответ

1   ответ
7

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

EDIT обратите внимание, что эта строка является URI! Он не может содержать пробелы, поэтому вы должны заменить их на & quot;% 20 & quot; заставить это работать.

Есть лиgeneratedfilename содержать какой-то символ, который должен быть закодирован? С обратной косой чертой вместо обратной косой черты это не работает?
путь: String filepath = & quot; file: \\\\ DOKSERVICE \\ Dokumaortak \\ ProductImage \\ & quot; + generatefilename + & quot; .JPG & quot ;; Sin5k4
он просто делает это: generatefilename = generatefilename.replace (& quot; / & quot ;, & quot; _ & quot;); и только что проверил его с помощью отладчика, и, кажется, он генерирует его нормально, похоже, это решает проблему. Sin5k4
Попробовал и получил: javax.imageio.IIOException: Не могу прочитать входной файл! :( Sin5k4
@ Sin5k4 вы можете опубликовать путь к файлу здесь? Точный, который вы используете, если это возможно.

Похожие вопросы