File file = new File(path);
if (!file.delete())
{
throw new IOException(
"Failed to delete the file because: " +
getReasonForFileDeletionFailureInPlainEnglish(file));
}
Run Code Online (Sandbox Code Playgroud)
那里getReasonForFileDeletionFailureInPlainEnglish(file)已经有很好的实施吗?否则我只需要自己写.
在objective-c中以原子方式写入文件的文件有什么区别而不是,两者之间是否有任何性能差异?
提前致谢!
这是我的情况.我想在我的应用程序中尽可能高效地写入文件系统.该应用程序是多线程的,每个线程都可以写入同一个文件.有没有一种方法可以从每个线程异步写入文件,而不会让不同线程中的写入结合在一起,可以这么说?
我正在使用C#和.NET 3.5,我也安装了Reactive Extensions.
我需要使用java nio将大字符串写入(追加)平面文件.编码为ISO-8859-1.
目前我们写的如下所示.有没有更好的方法来做同样的事情?
public void writeToFile(Long limit) throws IOException{
String fileName = "/xyz/test.txt";
File file = new File(fileName);
FileOutputStream fileOutputStream = new FileOutputStream(file, true);
FileChannel fileChannel = fileOutputStream.getChannel();
ByteBuffer byteBuffer = null;
String messageToWrite = null;
for(int i=1; i<limit; i++){
//messageToWrite = get String Data From database
byteBuffer = ByteBuffer.wrap(messageToWrite.getBytes(Charset.forName("ISO-8859-1")));
fileChannel.write(byteBuffer);
}
fileChannel.close();
}
Run Code Online (Sandbox Code Playgroud)
编辑:尝试了两种选择.以下是结果.
@Test
public void testWritingStringToFile() {
DiagnosticLogControlManagerImpl diagnosticLogControlManagerImpl = new DiagnosticLogControlManagerImpl();
try {
File file = diagnosticLogControlManagerImpl.createFile();
long startTime = System.currentTimeMillis();
writeToFileNIOWay(file);
//writeToFileIOWay(file);
long …Run Code Online (Sandbox Code Playgroud) 我正在阅读http://dev.w3.org/html5/markup/input.file.html,但我只找到了"接受"属性.
我试过这个
<input type="file" name="imagefilename" accept="image/x-png, image/gif, image/jpeg" />
Run Code Online (Sandbox Code Playgroud)
是否可以对文件大小进行客户端验证?
我发现了IE的这种技术
<html>
<head>
<script>
function getSize()
{
var myFSO = new ActiveXObject("Scripting.FileSystemObject");
var filepath = document.upload.file.value;
var thefile = myFSO.getFile(filepath);
var size = thefile.size;
alert(size + " bytes");
}
</script>
</head>
<body>
<form name="upload">
<input type="file" name="file">
<input type="button" value="Size?" onClick="getSize();">
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
是否可以使用html5文件系统api做同样的事情?
UPDATE
我可以这样做(演示):
<!doctype html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
</head>
<body>
<form >
<input type=file id=f max-size=32154 >
<input type=submit>
</form> …Run Code Online (Sandbox Code Playgroud) 我在集群系统上有几个并行运行的线程.每个python线程输出到一个目录mydir.每个脚本在输出检查之前是否存在mydir,如果不存在则创建它:
if not os.path.isdir(mydir):
os.makedirs(mydir)
Run Code Online (Sandbox Code Playgroud)
但这会产生错误:
os.makedirs(self.log_dir)
File "/usr/lib/python2.6/os.py", line 157, in makedirs
mkdir(name,mode)
OSError: [Errno 17] File exists
Run Code Online (Sandbox Code Playgroud)
我怀疑这可能是由于竞争条件,一个工作在另一个工作之前创建了dir.这可能吗?如果是这样,如何避免这种错误?
我不确定这是一个竞争条件,所以想知道Python中的其他问题是否会导致这个奇怪的错误.
例如,我想创建一个调用的文件sample.bin并输入一个数字,如255,这样255就会以小端,FF 00或3826到F2 0E的形式保存在文件中.
我尝试使用binmode,正如perldoc所说.
我正在编写一个程序,需要在目录及其所有子目录中搜索具有特定扩展名的文件.这将在本地和网络驱动器上使用,因此性能有点问题.
这是我现在使用的递归方法:
private void GetFileList(string fileSearchPattern, string rootFolderPath, List<FileInfo> files)
{
DirectoryInfo di = new DirectoryInfo(rootFolderPath);
FileInfo[] fiArr = di.GetFiles(fileSearchPattern, SearchOption.TopDirectoryOnly);
files.AddRange(fiArr);
DirectoryInfo[] diArr = di.GetDirectories();
foreach (DirectoryInfo info in diArr)
{
GetFileList(fileSearchPattern, info.FullName, files);
}
}
Run Code Online (Sandbox Code Playgroud)
我可以将SearchOption设置为AllDirectories而不使用递归方法,但将来我会插入一些代码来通知用户当前正在扫描的文件夹.
现在我正在创建一个FileInfo对象列表,我真正关心的是文件的路径.我将有一个现有的文件列表,我想将其与新的文件列表进行比较,以查看添加或删除了哪些文件.有没有更快的方法来生成这个文件路径列表?有什么办法可以优化这个文件搜索来查询共享网络驱动器上的文件吗?
更新1
我尝试创建一个非递归方法,通过首先查找所有子目录,然后迭代扫描每个目录中的文件来执行相同的操作.这是方法:
public static List<FileInfo> GetFileList(string fileSearchPattern, string rootFolderPath)
{
DirectoryInfo rootDir = new DirectoryInfo(rootFolderPath);
List<DirectoryInfo> dirList = new List<DirectoryInfo>(rootDir.GetDirectories("*", SearchOption.AllDirectories));
dirList.Add(rootDir);
List<FileInfo> fileList = new List<FileInfo>();
foreach (DirectoryInfo dir in dirList)
{
fileList.AddRange(dir.GetFiles(fileSearchPattern, SearchOption.TopDirectoryOnly));
}
return fileList;
}
Run Code Online (Sandbox Code Playgroud)
更新2
好吧,所以我在本地和远程文件夹上运行了一些测试,这两个文件夹都有很多文件(~1200).以下是我运行测试的方法.结果如下. …
我想读取一个非常大的文件的最后n行,而不是使用Java将整个文件读入任何缓冲区/内存区域.
我查看了JDK API和Apache Commons I/O,但无法找到适合此目的的API.
我在想UNIX中的尾部或更少的方式.我不认为他们加载整个文件,然后显示该文件的最后几行.在Java中也应该有类似的方法来做同样的事情.
我想使用R将文件从一个文件夹复制/粘贴到Windows中的另一个文件夹,但它不起作用.我的代码:
> file.rename(from="C:/Users/msc2/Desktop/rabata.txt",to="C:/Users/msc2/Desktop/Halwa/BADMASHI/SCOP/rabata.tx")
[1] FALSE
Run Code Online (Sandbox Code Playgroud) file-io ×10
java ×3
c# ×2
.net ×1
asynchronous ×1
binary ×1
directory ×1
file-copying ×1
filesystems ×1
html5 ×1
io ×1
iphone ×1
jdk1.6 ×1
jdk6 ×1
large-files ×1
nio ×1
objective-c ×1
perl ×1
python ×1
queue ×1
r ×1
validation ×1