我需要锁定一个文件以便用Python编写.它将同时从多个Python进程访问.我在网上找到了一些解决方案,但大多数都失败了,因为它们通常只基于Unix或基于Windows.
如何构建原子文件写操作?该文件由Java服务编写,并由python脚本读取.
对于记录,读取远远大于写入.但是写入分批发生并且往往很长.文件大小相当于兆字节.
现在我的方法是:
这是正确的方法吗?如何避免旧文件被删除但新文件名尚未重命名的情况?
这些编程语言(python和java)是否提供锁定和避免这种情况的构造?
我写了一个Android应用程序,可以将(可能)大文件保存到SD卡.有时我在写操作期间会收到IOException,导致文件处于损坏状态.根据这个问题的答案:
我应该使用的策略是创建一个临时文件,然后在写完成后复制该文件.我的问题是:
1)这是Android上最安全的方法吗?(例如,你可以复制android sd卡上的文件,如果是,那么操作是原子的吗?)
2)在资源有限(磁盘空间)的嵌入式系统中,是否有人知道另一种安全写入磁盘的策略?(而不是创建两个大文件)
谢谢
使用HTTP而不是普通套接字(Android上的Java)通过Wi-Fi网络将大型(50-200 MB)文件[文件在SD卡上]从Android设备发送到Linux服务器是否存在大量开销.
在我目前的原型中,我使用CherryPy-3.2.0来实现我的HTTP服务器.我在Nexus上运行Android 2.3.3作为我的客户端.
目前它需要约100秒**(在较慢的网络18 Mbps*上)和约50秒(在更快的54 Mbps*上)Wi-Fi网络上传50 MB二进制文件.
注意:
*我WifiInfo.getLinkSpeed()用来衡量网络链接速度
**这是之前和之后的时差HTTPClient.execute(postRequest)
关于其他昂贵的操作的任何其他想法可能在网络之外的总时间中占很大比例并且如何减少这个时间将是值得赞赏的.
谢谢.
编辑 - Android上的HTTP发布代码
private void doHttpPost(String fileName) throws Exception{
HttpParams httpParameters = new BasicHttpParams();
// Set the timeout in milliseconds until a connection is established.
int timeoutConnection = 9000000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
// Set the default socket timeout (SO_TIMEOUT)
// in milliseconds which is the timeout for waiting for data.
int timeoutSocket = 9000000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
HttpClient client = new DefaultHttpClient(httpParameters);
client.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.RFC_2109); …Run Code Online (Sandbox Code Playgroud)