在Web服务中执行代码:
using (File.OpenRead(@"\\server\file.txt"))
{
// some stuff
}
Run Code Online (Sandbox Code Playgroud)
导致IO异常只是说"无效签名"
使用File静态方法时,我无法通过谷歌找到有关此错误消息的任何内容.
var exists = File.Exists(@"\\server\file.txt"))
Run Code Online (Sandbox Code Playgroud)
但是不会抛出异常,这使得它看起来好像可以看到那里的文件,但它无法打开它进行读取.
对于"无效签名"在这个例子中试图说的话,我真的很茫然.
谢谢.
更新:
即使使用模拟从服务器打开读取文件,它仍然会使用"无效签名"抛出IO异常.
堆:
<StackTrace>
<StackFrame Index="6">
<FileName />
<Method>Void RenderImages(System.String, System.Nullable`1[System.Int32])</Method>
<LineNumber>0</LineNumber>
<ColumnNumber>0</ColumnNumber>
<ILOffset>88</ILOffset>
</StackFrame>
<StackFrame Index="5">
<FileName />
<Method>Void .ctor(System.String, Boolean)</Method>
<LineNumber>0</LineNumber>
<ColumnNumber>0</ColumnNumber>
<ILOffset>0</ILOffset>
</StackFrame>
<StackFrame Index="4">
<FileName />
<Method>Void .ctor(System.String, System.Text.Encoding, Boolean, Int32)</Method>
<LineNumber>0</LineNumber>
<ColumnNumber>0</ColumnNumber>
<ILOffset>7</ILOffset>
</StackFrame>
<StackFrame Index="3">
<FileName />
<Method>Void .ctor(System.String, System.Text.Encoding, Boolean, Int32, Boolean)</Method>
<LineNumber>0</LineNumber>
<ColumnNumber>0</ColumnNumber>
<ILOffset>113</ILOffset>
</StackFrame>
<StackFrame Index="2">
<FileName />
<Method>Void .ctor(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, Int32, …Run Code Online (Sandbox Code Playgroud) 我使用库rome.dev.java.net来获取RSS.
代码是
URL feedUrl = new URL("http://planet.rubyonrails.ru/xml/rss");
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(new XmlReader(feedUrl));
Run Code Online (Sandbox Code Playgroud)
您可以检查http://planet.rubyonrails.ru/xml/rss是否为有效URL,并在浏览器中显示该页面.
但我从我的申请中得到例外
java.io.FileNotFoundException: http://planet.rubyonrails.ru/xml/rss
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1311)
at com.sun.syndication.io.XmlReader.<init>(XmlReader.java:237)
at com.sun.syndication.io.XmlReader.<init>(XmlReader.java:213)
at rssdaemonapp.ValidatorThread.run(ValidatorThread.java:32)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Run Code Online (Sandbox Code Playgroud)
我不使用任何代理.我在我的PC和生产服务器上遇到此异常,并且只有此URL,其他URL正在运行.
我的一个应用程序旨在读取(并且只读取)可能正在使用的文件.
但是,当读取已经打开的文件(例如Microsoft Word)时,此应用程序会抛出System.IO.IOException:
该进程无法访问文件'<filename here>',因为它正由另一个进程使用.
用于读取文件的代码是:
using (Stream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete))
{
// Do stuff here.
}
Run Code Online (Sandbox Code Playgroud)
当然,由于该文件已被使用,因此预计会出现此异常.
现在,如果我要求操作系统将文件复制到新位置,然后阅读它,它可以工作:
string tempFileName = Path.GetTempFileName();
File.Copy(fileName, tempFileName, true);
// ? We read the newly created file.
using (Stream stream = new FileStream(tempFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete))
{
// Do stuff here.
}
Run Code Online (Sandbox Code Playgroud)
什么是魔术File.Copy允许读取应用程序已经使用的文件,特别是如何使用这个魔术来读取文件而不制作临时副本?
如果文件位于本地文件系统中,为什么在处理外部文件操作时必须在main方法中使用"throws IOException".
我想实现一个从磁盘/网络中检索对象的迭代器.
Iterator itr = getRemoteIterator();
while(itr.hasNext()) {
Object element = itr.next();
System.out.print(element + " ");
}
Run Code Online (Sandbox Code Playgroud)
然而问题是,hasNext()和next()该方法的迭代器对象不允许扔IOException.是否还有其他标准接口可以解决此问题?
期望的代码是:
public interface RemoteIterator<E> {
boolean hasNext() throws IOException;
E next() throws IOException;
void remove();
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Android jobb工具为我的应用程序创建一个大型OBB文件,但我受到"FAT Full"IOException的困扰:
java.io.IOException: FAT Full (XXXX, YYYY)
at de.waldheinz.fs.fat.Fat.allocNew(Fat.java:298)
at de.waldheinz.fs.fat.Fat.allocAppend(Fat.java:376)
at de.waldheinz.fs.fat.ClusterChain.setChainLength(ClusterChain.java:175)
at de.waldheinz.fs.fat.ClusterChain.setSize(ClusterChain.java:132)
at de.waldheinz.fs.fat.FatFile.setLength(FatFile.java:91)
at de.waldheinz.fs.fat.FatFile.write(FatFile.java:154)
at com.android.jobb.Main$1.processFile(Main.java:495)
at com.android.jobb.Main.processAllFiles(Main.java:604)
at com.android.jobb.Main.processAllFiles(Main.java:600)
at com.android.jobb.Main.main(Main.java:417)
Exception in thread "main" java.lang.RuntimeException: Error getting/writing file with name: LAST_PROCESSED_FILE
at com.android.jobb.Main$1.processFile(Main.java:501)
at com.android.jobb.Main.processAllFiles(Main.java:604)
at com.android.jobb.Main.processAllFiles(Main.java:600)
at com.android.jobb.Main.main(Main.java:417)
Run Code Online (Sandbox Code Playgroud)
在上面的错误消息中,XXXX总是打印为一个低于YYYY的整数值,并且代表可用"簇"的数量(我对存储术语的了解不足以确切知道这意味着什么).YYYY代表最后一个成功分配的集群索引,根据我的经验,它始终与最后一个可用的集群索引相同(数组的大小为XXXX + 2,因此XXXX + 1与YYYY相同是最后一个可用的索引).
崩溃似乎出现在总文件大小超过511 MB的位置(实际限制为536,193,820字节,单个字节更多导致溢出!),因此LAST_PROCESSED_FILE相当任意,但它列出了正在处理的文件发生了崩溃.鉴于存储格式是FAT16(据我所知),那么最大文件大小不应该是2 GB吗?
我已经通过各种来源阅读了空的或小的目录或文件,小的总文件大小或超过500 MB的目录中的单个文件可能导致此崩溃(尽管我无法确定原因).这些原因都不适用于我的情况(这也是基于总文件大小).
我自己对jobb工具源的评论没有提供任何见解.任何人都可以请棚任何光线在这个问题上?
我正在使用Java程序"POST"方法将文件从一台服务器上传到另一台服务器.但我得到的是异常.
java.io.IOException: Error writing to server
at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:582)
at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:594)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1216)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)
at com.test.rest.HttpURLConnectionExample.TransferFile(HttpURLConnectionExample.java:107)
at com.test.rest.HttpURLConnectionExample.main(HttpURLConnectionExample.java:44)
Run Code Online (Sandbox Code Playgroud)
我有其他方法将与服务器进行身份验证.这将从下面的代码中调用.当我从服务器得到响应时,我正在超越异常.要将文件传输到服务器,我已经写了下面的方法.我的示例代码如下:
public static void TransferFile(){
String urlStr = "http://192.168.0.8:8600/audiofile?path=1/622080256/virtualhaircut.mp3";
File tempFile = new File("/home/MyPath/Workspace/Sample/virtualhaircut.mp3");
BufferedWriter br=null;
HttpURLConnection conn = null;
URL url;
try {
url = new URL(urlStr);
AuthenticationUser();
conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", new MimetypesFileTypeMap().getContentType(tempFile.getName()));
} catch (MalformedURLException e1) {
System.out.println("Malformed");
e1.printStackTrace();
} catch (ProtocolException e) {
System.out.println("Protocol");
e.printStackTrace();
} catch (IOException e) {
System.out.println("IO");
e.printStackTrace();
}
System.out.println("line 69"); …Run Code Online (Sandbox Code Playgroud) 我使用spring-boot-starter-websocket和spring boot 1.5.3.RELEASE当sockjs试图执行心跳时,我得到大量日志任务不知怎的,连接丢失了. 这篇文章说它已关闭(根据JIRA),但我仍然遇到同样的问题
这是我的配置
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Bean
WebSocketHandler getWsHandler() {
return new WebSocketHandler();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS();
} }
Run Code Online (Sandbox Code Playgroud)
这是日志
2017-07-11 15:10:23.753 INFO 7574 --- [MessageBroker-4] o.apache.coyote.http11.Http11Processor:在非容器线程上处理时发生错误.连接将立即关闭
java.io.IOException:sun.nio.ch.FileDispatcherImpl.write0(本机方法)〜[na:1.8.0]在sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)〜[na :1.8.0] at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)〜[na:1.8.0] at sun.nio.ch.IOUtil.write(IOUtil.java:65)〜[na :1.8.0] at .nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:466)〜[na:1.8.0] at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:134 )〜[tomcat-embed-core-8.5.14.jar:8.5.14]在org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101)〜[tomcat-embed-core-8.5. 14.jar:8.5.14]在org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:157)〜[tomcat-embed-core-8.5.14.jar:8.5.14] at org. org.apache.tomcat.util.net.SocketWrapperBase上的apache.tomcat.util.net.NioEndpoint $ NioSocketWrapper.doWrite(NioEndpoint.java:1259)~ [tomcat-embed-core-8.5.14.jar:8.5.14] org.apache.tomcat中的.doWrite(SocketWrapperBase.java:670)~ [tomcat-embed-core-8.5.14.jar:8.5.14] .util.net.SocketWrapperBase.flushBlocking(SocketWrapperBase.java:607)〜[tomcat-embed-core-8.5.14.jar:8.5.14] at org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase. java:597)〜[tomcat-embed-core-8.5.14.jar:8.5.14] at org.apache.coyote.http11.Http11OutputBuffer.flushBuffer(Http11OutputBuffer.java:581)~ [tomcat-embed-core-8.5 .14.jar:8.5.14]在org.apache的org.apache.coyote.http11.Http11OutputBuffer.flush(Http11OutputBuffer.java:272)〜[tomcat-embed-core-8.5.14.jar:8.5.14] orco.apache.coyote.AbstractProcessor.action(AbstractProcessor.java:279) 〜[tomcat-embed-core-8.5.14.jar:8.5.14] …
实际上我错误地在我当前的android .So项目中粘贴了另一个项目的google-services json文件,在构建应用程序时,我收到错误没有找到包'com.mybidu.www'的匹配客户端.我试图删除该文件,但它给出错误'Java IO Exception无法删除google-services.json'也不允许我覆盖同一个文件.我该怎么办 ?
我正在使用带有谷歌物联网的Pi 3来操作一些控制灌溉系统阀门的继电器.该系统使用互联网获取天气预报以使用多少水,并使用NanoHTTPD提供UI.
它运行得很好,但偶尔我会收到一个错误,它会阻止整个事情.从日志文件:
05-04 05:26:14.677 737-1077/com.google.android.gms.persistent W/Conscrypt: Could not set socket write timeout:
05-04 05:26:14.678 737-1077/com.google.android.gms.persistent W/Conscrypt: java.lang.reflect.Method.invoke(Native Method)
com.google.android.gms.org.conscrypt.Platform.setSocketWriteTimeout(:com.google.android.gms@11973330:13)
05-04 05:26:14.798 737-1077/com.google.android.gms.persistent W/Conscrypt: Could not set socket write timeout:
05-04 05:26:14.799 737-1077/com.google.android.gms.persistent W/Conscrypt: java.lang.reflect.Method.invoke(Native Method)
com.google.android.gms.org.conscrypt.Platform.setSocketWriteTimeout(:com.google.android.gms@11973330:13)
05-04 05:26:14.914 737-1077/com.google.android.gms.persistent W/GLSUser: [AppCertManager] IOException while requesting key:
java.io.IOException: Invalid device key response.
at fmk.a(:com.google.android.gms@11973330:12)
at fmk.a(:com.google.android.gms@11973330:64)
at fmi.a(:com.google.android.gms@11973330:8)
at fme.a(:com.google.android.gms@11973330:1)
at fmd.a(:com.google.android.gms@11973330:10)
at com.google.android.gms.auth.account.be.legacy.AuthCronChimeraService.b(:com.google.android.gms@11973330:7)
at ers.call(:com.google.android.gms@11973330:3)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at kfr.run(:com.google.android.gms@11973330:26)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at kku.run(Unknown Source:7)
at java.lang.Thread.run(Thread.java:764)
Run Code Online (Sandbox Code Playgroud)
我很欣赏一些如何阻止这种情况发生的暗示.
谢谢.
ioexception ×10
java ×5
android ×2
c# ×2
.net ×1
broken-pipe ×1
file-access ×1
file-upload ×1
firebase ×1
iterator ×1
java-7 ×1
post ×1
rome ×1
rss ×1
spring ×1
url ×1
websocket ×1