标签: file-locking

TFS不允许文件夹重命名,声称有锁

在visual studio 2008中,由于名称中的拼写错误,我想重命名文件夹.我在解决方案结构中重命名它.现在检出文件夹和.CSProj文件,然后我办理登机手续.

TFS回来时"Microsoft Visual Studio此时无法执行源代码控制操作,因为操作中涉及的某些文件已被锁定.请稍后重试该操作".

查看源代码管理资源管理器,我可以确认文件夹及其中的文件根本没有签出..csproj和csproj.vspscc由另一个用户"编辑".

这里发生了什么?

如果我尝试撤消更改,我会得到相同的消息.在撤消更改之前,我必须强制获取最新版本.那也是怎么回事?

最终修复是让所有其他用户检入.csproj,然后重命名Source control explorer中的文件夹.在这一点上,它工作,虽然以前没有工作.

重命名的签入成功,并且在以下签入中清除了对旧名称的引用.

version-control tfs file-locking visual-studio-2008

4
推荐指数
1
解决办法
6689
查看次数

File.Open用于在Windows中执行文件时拒绝读取访问

我在Windows中执行文件的文件权限有问题,似乎是在关注论坛提示后解决的[1],但我无法理解为什么.也许你们可以提供帮助.

我正在通过执行它来检查文件的标题(读取控制台输出)然后打开相同的文件以便随后使用FileStream进行读取:

public void fileMD5(string filename) {
  if (!File.Exists(filename)) return NT.Fail("File does not exist: " + filename);

  BinaryReader stream = new BinaryReader(File.Open(filename,
      FileMode.Open, FileAccess.Read, FileShare.ReadWrite));
  int bufferSize = 4096;
  byte[] buffer = new byte[bufferSize];
  int readBytes;
  while ((readBytes = stream.Read(buffer, 0, bufferSize)) > 0) {
    md5Hasher.TransformBlock(buffer, 0, readBytes, buffer, 0);
  }
  stream.Close();
}

fileMD5('sample.exe');
Run Code Online (Sandbox Code Playgroud)

每隔一段时间我就会得到"文件被另一个进程使用".从维基百科我知道Windows将锁定执行拒绝写访问的文件[2],但我只是在阅读.当我尝试打开它时,该过程应该已经停止.

从论坛帖子看,似乎添加一个FileShare.ReadWrite会有所帮助,它似乎确实如此:

FileStream stream = File.Open('sample.exe', 
    FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
Run Code Online (Sandbox Code Playgroud)

但我不明白为什么.这里有没有竞争条件我看不到?

使用FileShare.ReadWrite而不是默认值(我猜是FileShare.Read),File.Open调用似乎要快得多.

[1] http://www.xtremevbtalk.com/archive/index.php/t-192118.html

[2] http://en.wikipedia.org/wiki/File_locking#In_Microsoft_Windows

c# windows file-locking

4
推荐指数
1
解决办法
1万
查看次数

我的Maven项目中出现以下错误是什么?拒绝访问

标记中显示错误:

处理XML时发生错误'C:\ Users\CHANDAN-G\Documents\workspace-sts-3.6.3.RELEASE\java-blog-aggregator\target\classes\com\chandan\_blog\controller\IndexController.class(Access is被拒绝)".有关详细信息,请参阅错误日志.disatcher-servlet.xml/java-blog-aggregator/src/main/webapp/WEB-INF第8行Spring Bean问题

在我的dispatcher-servlet.xml:

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">

//THIS BELOW LINE HAS THE FOLLOWING ERROR AS SHOWN BY MARKER:
<context:component-scan base-package="com.chandan.blog.controller"></context:component-scan>

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/defs/general.xml</value>
        </list>
    </property>
</bean>

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/>
</bean>

</beans>
Run Code Online (Sandbox Code Playgroud)

依赖关系和插件我的Pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.chandan.blog</groupId>
  <artifactId>java-blog-aggregator</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>

  <!-- Shared version number properties -->
<properties>
    <org.springframework.version>4.1.3.RELEASE</org.springframework.version>
    <apache.tiles>3.0.5</apache.tiles>
</properties>

<dependencies>
<!--
    Core utilities used by other …
Run Code Online (Sandbox Code Playgroud)

windows file-locking

4
推荐指数
1
解决办法
1万
查看次数

从Java强制在Windows上删除文件

即使文件被某个进程锁定,是否有java编程方式强制在Windows上删除文件?我无法杀死锁定文件的进程.

java windows file-locking

3
推荐指数
1
解决办法
2258
查看次数

将文件写入磁盘时锁定文件

我有两个独立的线程F1和F2(确切地说,两个java.util.concurrent.FutureTask实例)并行运行.

F1进行一些处理,然后将结果复制到XML文件中.然后,它重复这些步骤,直到它无关(创建了许多XML文件).F2查看F1输出目录,取一个文件,解析它,并对其执行一些处理.

这非常有效,除了有时F2从文件中获取截断的XML数据.我的意思是一个不完整的XML,其中一些XML节点不存在.问题是它并不总是可再现的,并且被截断的文件并不总是相同的.因此,我认为当F1在磁盘上写入一个文件时,F2正在尝试读取同一个文件.这就是为什么有时我会遇到这种错误.

我的问题:我想知道是否有一些机制锁定(甚至读取)文件F1当前正在写入,直到它完全完成将其写入磁盘,因此在文件解锁之前F2将无法读取它.或任何其他方式来解决我的问题将是受欢迎的!

F1正在以这种方式编写文件:

try {
    file = new File("some-file.xml");
    FileUtils.writeStringToFile(file, xmlDataAsString);
} catch (IOException ioe) {
    LOGGER.error("Error occurred while storing the XML in a file.", ioe);
}
Run Code Online (Sandbox Code Playgroud)

F2正在以这种方式读取文件:

private File getNextFileToMap() {
    File path = getPath(); // Returns the directory where F1 stores the results...
    File[] files = path.listFiles(new FilenameFilter() {
        public boolean accept(File file, String name) {
            return name.toLowerCase().endsWith(".xml");
        }
    });
    if (files.length > 0) {
        return files[0];
    }
    return null;
}

// Somewhere in my …
Run Code Online (Sandbox Code Playgroud)

java file-io file-locking java.util.concurrent

3
推荐指数
2
解决办法
4343
查看次数

如何使用c ++在Windows中锁定文件?

如何将Windows中的文件锁定为只有当前线程(来自同一进程的其他线程,没有其他进程)才能访问(读/写)该文件?

如果有可能请告诉我一些类似fcntl的解决方案(锁定具有其描述符的文件的解决方案).但无论如何,其他解决方案也是受欢迎的.

c++ file file-locking

3
推荐指数
1
解决办法
5154
查看次数

如何允许2个人在git存储库的同一本地副本上工作?或者我可以吗?

这可能很冗长,但我刚开始使用git,所以我还在这里学习.

在此之前,我有一个开发人员团队,他们使用我们所有开发文件的本地副本从同一个硬盘驱动器上工作.所以我们有1个硬盘和4个开发人员.我们所有人都使用崇高的文本并一起处理项目.我们都在同一个房间工作,因此同时处理同一个项目从来都不是问题.我们只是不同时处理同一个文件.不是最好的系统,但它当时有效.

现在我们想要向团队介绍git,因为VCS很重要.我们遇到的问题是文件被一个用户锁定,没有其他人可以在该存储库上使用git.

这是一个例子.我在早上登录我的mac并对位于/ Volumes/dev/projectx /的Project X中的文件进行一些更改.我打开终端并将这些更改提交到本地存储库(也存储在/ Volumes/dev/projectx /).我的同事进入并登录他的mac.他打开了他的终端,检查他正在处理的回购的状态.所以他进入/ Volumes/dev/projectx /并运行git status.他收到一条错误消息,指出索引已被锁定.为了允许他在repo上运行任何git命令,我必须完全注销(可能只是杀死一些进程,但我不知道哪些进程).我退出后,他可以像没有问题一样工作.

有没有什么方法可以同时在同一个本地存储库上工作?我还发现,如果我在一个有git存储库的项目中工作,其他人甚至在finder窗口中打开项目文件夹,它会完全阻止我使用那个git repo(同样的索引锁定错误) ).

我们愿意改变我们处理文件的方式,但由于驱动器上有数千个项目,因此我们每个人都拥有自己的所有文件的本地副本并不真实.此外,由于许多更改都是​​某种非常简单的文本更改,因此远程托管所有这些存储库并且必须在我们只想更新单个文件时随时删除所有文件似乎很乏味.

我真的在这里寻找工作流建议,但我问的问题是这里的起点.

git macos file-locking

3
推荐指数
1
解决办法
1486
查看次数

Java FileLock是一个POSIX顾问(fcntl)锁

我有一个使用POSIX顾问锁来锁定文件的C++程序.也就是说,它使用POSIX fcntl系统调用进行锁定操作.我想要一个Java程序与该C++程序进行互操作,所以我希望我的Java程序也使用POSIX顾问锁.Java中的文件锁定应该使用标准FileLock类.但是关于如何实现锁定,API文档可以理解为模糊:

此文件锁定API旨在直接映射到底层操作系统的本机锁定工具.因此,无论编写这些程序的语言如何,所有可以访问该文件的程序都可以看到文件中保存的锁.

如果我在POSIX操作系统上运行Java(Oracles,Open JDK)的通用实现,或者更具体地说是GNU/Linux系统,可以安全地假设Java FileLock类使用POSIX咨询锁吗?

java linux posix file-locking fcntl

3
推荐指数
2
解决办法
2432
查看次数

flock()的范围是什么?

我正在测试是否从其他线程锁定文件描述符会影响主线程。

#include <iostream>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
//#include <share.h>
#include <stdio.h>
#include <pthread.h>
#include <errno.h>

void *print_message_function( void *ptr );

pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;

int main (int argc, char * const argv[]) {

    pthread_t thread1, thread2;
const char *message1 = "Thread 1";
const char *message2 = "Thread 2";
int  iret1, iret2;

    iret2 = pthread_create( &thread2, NULL, print_message_function, (void*) message1);

    if(iret2)
    {
        fprintf(stderr,"Error - pthread_create() return code: %d\n",iret2);
        fflush(stdout);
        exit(EXIT_FAILURE);
    }

        printf("pthread_create() for thread 2 …
Run Code Online (Sandbox Code Playgroud)

c multithreading file-locking flock

3
推荐指数
1
解决办法
535
查看次数

如何在编辑时锁定Ubuntu服务器中的文件

这是我第一次与其他开发人员一起开发项目(现在只有两个).我们的想法是使用FTP/SFTP软件(如FileZilla)直接从服务器编辑文件.我们希望打开用于编辑的任何文件都被阻止,因此其他用户无法同时编辑它.这可能吗?如果没有FileZilla,也许使用其他软件?我看过Git,Codiad和其他类似的解决方案,但它们太复杂了(在GitHub中合并并发版本并不简单)或者有bug(Codiad没有保存文件).我们认为文件锁定是原始的,但对我们来说足够好(我们在同一个房间).问题是:我们如何实施它?

filezilla file-locking filelock ubuntu-server

3
推荐指数
1
解决办法
588
查看次数