我刚写了一个PHP脚本,它应该连接到FTP并删除特殊文件夹中的所有文件.
它看起来像这样,但我不知道删除文件夹日志中的所有文件需要什么命令.
任何的想法?
<?php
// set up the settings
$ftp_server = 'something.net';
$ftpuser = 'username';
$ftppass = 'pass';
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftpuser, $ftppass);
// delete all files in the folder logs
????????
// close the connection
ftp_close($conn_id);
?>
Run Code Online (Sandbox Code Playgroud) 我知道如何在C#中擦除文件,包括它的扇区等.
但是如何覆盖目录呢?
示例:@"C:\mydirectory\"必须永远不可恢复(所有文件内部已经被擦除),以便无法恢复目录结构或其名称.
-------------------下面更新(评论格式是如此麻烦,所以我在这里发布)---
对于文件删除,我查找分区的簇和区段大小,并使用5种不同的算法将其覆盖至少40次,其中最后一种算法始终是随机算法.数据实际上每次都写入磁盘(而不仅仅是内存或其他东西).唯一的风险是,当我擦除某些东西时,理论上可以更改该文件磁盘上的物理地址.我知道的唯一解决方案是在擦除文件后擦除可用磁盘空间,并希望当前没有其他文件部分保留擦除文件的旧物理位置.或者Windows不做这样的事情?
http://www.sans.org/reading_room/whitepapers/incident/secure-file-deletion-fact-fiction_631指出:
"重要的是要注意一致认为,覆盖数据只会降低数据被恢复的可能性.数据被覆盖的次数越多,恢复数据的成本和成本就越高.事实上,Peter Guttman说:"它是通过简单地覆盖存储位置,无论有多少覆盖传递或写入什么数据模式,都无法对存储位置进行消毒."3使用磁力显微镜可以恢复覆盖数据,这可以处理硬盘上的成像磁化模式磁盘.如何实现这一目标的实际细节超出了本文的范围."
我个人认为,当我使用不同的(可能是未知的)算法覆盖100次以上的数据时(如果没有像交换文件那样留在其他地方的数据副本),那将需要任何非常昂贵的专业团队多年才能获得这些数据.如果他们确实在那些年后获得了数据,那么他们应该得到它我认为......那一定是一个终生的项目.
所以:
然后结论应该是:(几乎)不可能在C#中安全擦除?
Winforms程序需要将一些运行时信息保存到XML文件中.该文件有时可能是几百千字节.在beta测试期间,我们发现一些用户会毫不犹豫地随机终止进程并偶尔导致文件被写入一半并因此被破坏.
因此,我们将算法更改为保存到临时文件,然后删除实际文件并执行移动.
我们的代码目前看起来像..
private void Save()
{
XmlTextWriter streamWriter = null;
try
{
streamWriter = new XmlTextWriter(xmlTempFilePath, System.Text.Encoding.UTF8);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(MyCollection));
xmlSerializer.Serialize(streamWriter, myCollection);
if (streamWriter != null)
streamWriter.Close();
// Delete the original file
System.IO.File.Delete(xmlFilePath);
// Do a move over the top of the original file
System.IO.File.Move(xmlTempFilePath, xmlFilePath);
}
catch (System.Exception ex)
{
throw new InvalidOperationException("Could not save the xml file.", ex);
}
finally
{
if (streamWriter != null)
streamWriter.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
这几乎在所有时间都在实验室和生产中使用.该程序在12台计算机上运行,平均每5分钟调用一次该代码.每天大约一两次我们得到这个例外:
System.InvalidOperationException:
Could not save the xml …Run Code Online (Sandbox Code Playgroud) Linux 上可以使用哪些系统调用来删除文件?我指的不仅仅是 libc-wrapper 使用的系统调用(它又由命令行工具使用)。
除了unlink以及unlinkat哪些系统调用可用于删除 Linux 计算机上的文件?
我用了
File f=new File(MyPath);
f.delete();
Run Code Online (Sandbox Code Playgroud)
我使用了权限WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE,但它在 Android 5 中不起作用。
Logcat 消息:
java.io.FileNotFoundException: storage/external_SD/mm.txt: open failed: EACCES (Permission denied)
Run Code Online (Sandbox Code Playgroud)
清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mahestan_programming.myapplication">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
自版本 4.4 起,我们无法从 MICRO SD 卡删除和写入文件。现在它是只读的。
android delete-file android-permissions android-external-storage
很简单,我想删除一个可能存在也可能不存在的文件。仅使用remove(filename)并忽略返回值是不好的做法吗?
编辑:通过删除,我指的是这个
用户上传图像后,我必须将图像存储几分钟,直到用户确认并将其存储在数据库中
所以我想创建一个临时文件并用它来显示预览。
但我必须确保,如果用户不再交互,该文件将在一段时间后被删除
我发现这篇关于临时文件以及如何自动删除它们的文章https://softwarecave.org/2014/02/05/create-temporary-files-and-directories-using-java-nio2/
但如果我理解正确的话,deleteOnExit 和 ShutdownHook 将在虚拟机关闭后调用,所以如果我的应用程序长时间保持在线,谢谢,这些文件永远不会被删除,并且当我调用 close 方法时 DELETE_ON_EXIT 选项将删除文件,所以如果我从不调用由于用户不执行任何操作,因此该文件也永远不会被删除。这是正确的?
那么..有什么方法可以保证文件在一段时间后自动删除吗?
我正在考虑使用 deleteOnExit 和 DELETE_ON_CLOSE 选项创建一个文件,并添加到具有“超时”的线程,并在超时后检查文件是否仍然存在并删除,但我不知道是否存在最佳方法。
谢谢
更新
根据最佳答案,我开发了一个项目,java.util.File在 Kotlin 中写入时添加此行为。
https://github.com/vinicius-rob-cunha/kotlin-auto-delete-file
我有100个不同名称的文件夹,每个文件夹里面应该有相同的三个文件,但在某些文件夹中,这三个文件都不存在.
如何删除那些空的或只包含一个或两个文件的文件夹?
这些是三个文件:
001.7z
002.7z
003.7z
Run Code Online (Sandbox Code Playgroud) 我知道可以使用脚本和驱动 API 将 Excel 文件转换为 Google Sheets,但我正在寻找脚本来转换 Excel 工作表并将转换后的文件移动到其他文件夹。
所以需要的步骤如下:
Excel 文件正在粘贴到正在同步到 Google Drive 的本地文件夹中,并且文件不大于 3mb。当前脚本如下。这是转换文件,但将它们放置在根文件夹中,并且当脚本再次运行时将重复转换。
function importXLS(){
var files = DriveApp.getFolderById('1hjvNIPgKhp2ZKIC7K2kxvJjfIeEYw4BP').searchFiles('title != "nothing"');
while(files.hasNext()){
var xFile = files.next();
var name = xFile.getName();
if (name.indexOf('.xlsx')>-1){
var ID = xFile.getId();
var xBlob = xFile.getBlob();
var newFile = { title : name+'_converted',
key : ID
}
file = Drive.Files.insert(newFile, xBlob, {
convert: true
});
}
} …Run Code Online (Sandbox Code Playgroud) file-conversion google-sheets delete-file google-apps-script google-drive-api
我创建了一个 CodePipeline,它从 CodeCommit 存储库获取输入(文件)并将文件部署到 S3 存储桶。当我删除 CodeCommit 存储库中的文件时,管道不会删除相应 S3 存储桶中的文件。简而言之,我希望我的 S3 存储桶与 CodeCommit 存储库同步。我怎样才能实现这个目标?
我的管道没有 CodeBuild 阶段。
AWS-CodeCommit --> CodePipeline --> 部署到跨账户-S3
amazon-s3 amazon-web-services delete-file aws-codecommit aws-codepipeline
delete-file ×10
c# ×2
amazon-s3 ×1
android ×1
c ×1
c++ ×1
cryptography ×1
directory ×1
file ×1
ftp ×1
ioexception ×1
java ×1
linux ×1
move ×1
php ×1
python ×1
security ×1
system-calls ×1
unlink ×1