如何列出一个文件夹的所有文件,但不能列出其文件夹或子文件.换句话说:我如何只列出文件?
我想列出满足特定条件(日期和货币)的目录中的所有文件.所以,只有一个条件参数pattern
中list.files
运作良好:
file.ls <- list.files(path='~/DATA/PiP/Curvas/',pattern='20130801')
Run Code Online (Sandbox Code Playgroud)
对于我尝试过的多种情况:
file.ls <- list.files(path='~/DATA/PiP/Curvas/',pattern=c('20130801','USD'))
Run Code Online (Sandbox Code Playgroud)
但是和第一个结果相同.有没有办法在pattern
参数中有多个标准list.files
?
我在服务器上使用Git存储库来版本化发送到服务器的用户数据文件.我有兴趣在任何两个版本之间获取已更改文件的列表.
我知道git diff --name-only <rev1> <rev2>
,但这只给了我一个文件名列表.我也对重命名和复制特别感兴趣.理想情况下,输出将是这样的:
updated: userData.txt
renamed: picture.jpg -> background.jpg
copied: song.mp3 -> song.mp3.bkp
Run Code Online (Sandbox Code Playgroud)
可能吗?--name-status
似乎也没有表示重命名和副本.
如何获取包含用户计算机上文件的完整路径的文件列表(作为字符串集或其他存储方法)?
有这样做的方法吗?
已经提出了对此的变化.使用下面的代码搜索本地目录没有问题.
EXEC MASTER.sys.xp_dirtree 'C:\', 1, 1
Run Code Online (Sandbox Code Playgroud)
当我将路径切换到网络位置时,结果为空.
EXEC MASTER.sys.xp_dirtree '\\Server\Folder', 1, 1
Run Code Online (Sandbox Code Playgroud)
我首先想到的可能与权限有关.我将SQL Server服务添加到共享卷和安全组的ACL列表中.
非常感谢任何指导我的帮助或方向,甚至是获取目录和子目录中的文件列表的另一种方式.
将帖子
我总是习惯于git
确定哪些文件应该进入gem包:
gem.files = `git ls-files`.split "\n"
Run Code Online (Sandbox Code Playgroud)
不幸的是,这种方法最近被证明是不合适的.我需要一个独立的纯Ruby解决方案.
我的第一个想法是简单地整理整个目录,但仅此一项可能包括不需要的文件.所以,在研究了这个问题之后,我想出了这个:
# example.gemspec
directory = File.dirname File.expand_path __FILE__
dotfiles = %w(.gitignore .rvmrc)
ignore_file = '.gitignore'
file_list = []
Dir.chdir directory do
ignored = File.readlines(ignore_file).map(&:chomp).reject { |glob| glob =~ /\A(#|\s*\z)/ }
file_list.replace Dir['**/**'] + dotfiles
file_list.delete_if do |file|
File.directory?(file) or ignored.any? { |glob| File.fnmatch? glob, file }
end
end
# Later...
gem.files = file_list
Run Code Online (Sandbox Code Playgroud)
这似乎有点复杂gemspec
.它也不完全支持gitignore
模式格式.它目前似乎有效,但我宁愿以后再遇到问题.
是否有一种更简单但更健壮的方法来计算gem的文件列表?大多数宝石显然都在使用git ls-files
,而那些没有使用类似于我的解决方案或手动指定文件.
我正在创建一个Android应用程序,我想列出目录中的文件.我是通过打电话来做的
File[] files = path.listFiles(new CustomFileFilter());
Run Code Online (Sandbox Code Playgroud)
path
是一个File
通过调用创建的对象
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
Run Code Online (Sandbox Code Playgroud)
当我然后files
通过调用尝试获取数组的长度
int length = files.length;
Run Code Online (Sandbox Code Playgroud)
这行给了我一个NullPointerException
,因为files
是null.
我已经path
通过调用检查了我是否尝试列出存在的文件
System.out.println("Path exists: " + path.exists());
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,它会打印出来
Path exists: true
Run Code Online (Sandbox Code Playgroud)
在Android Studio控制台中,因此该目录存在.
我还打印了路径名称,即
/storage/emulated/0/Download
Run Code Online (Sandbox Code Playgroud)
所以这path
是一个目录,而不是一个文件.
我不知道为什么我会得到一个NullPointerException
,因为这path
是一个目录.
编辑:CustomFileFilter
该类看起来像这样:
public class CustomFileFilter implements FileFilter {
// Determine if the file should be accepted
@Override
public boolean accept(File file) {
// If the file isn't a …
Run Code Online (Sandbox Code Playgroud) 我想获取FTP服务器上每个文件的文件名,文件大小和上次修改时间,然后用它填充listView.
它工作得非常好,直到我切换FTP主机,现在它真的很迟钝,尽管新的主机在真正的FTP客户端同样快.
任何明显的原因为什么?
此外,每次发送登录凭据是否真的有必要?
我正在使用第一种方法来获取字符串数组,然后遍历它并在每个项目上使用第二个方法来获取文件大小:
public static string[] GetFileList()
{
string[] downloadFiles;
StringBuilder result = new StringBuilder();
FtpWebRequest request;
try
{
request = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://mysite.se/"));
request.UseBinary = true;
request.Credentials = new NetworkCredential(settings.Username, settings.Password);
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.UseBinary = true;
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string line = reader.ReadLine();
while (line != null)
{
result.Append(line);
result.Append("\n");
line = reader.ReadLine();
}
// to remove the trailing '\n'
result.Remove(result.ToString().LastIndexOf('\n'), 1);
reader.Close();
response.Close();
return result.ToString().Split('\n');
}
catch (Exception ex)
{ …
Run Code Online (Sandbox Code Playgroud) 我需要找到目录及其所有子目录中的所有文件(除了一些).
目前我正在使用这种方法:
public static Collection<File> listFiles(File directory,FilenameFilter filter,boolean recurse){
Vector<File> files = new Vector<File>();
File[] entries = directory.listFiles();
if(entries!=null){
for (File entry : entries){
if (filter == null || filter.accept(directory, entry.getName())){
files.add(entry);
}
if (recurse && entry.isDirectory()){
files.addAll(listFiles(entry, filter, recurse));
}
}
}
return files;
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
this.foundFiles=listFiles(new File(this.BaseDirectory), new FilenameFilter() {
public boolean accept(File dir, String name) {
boolean res=true;
if(name.endsWith(".pdf")){
if(!dir.getPath().endsWith("done")){
if((workingFile!=null && (dir.getPath().equals(workingFile.getParent()) && name.equals(workingFile.getName())))){
res=false;
}else{
try {
ArrayList<String> AuthFolders = DB.getGroupAuthFoldersArray();
for(String folder:AuthFolders){
if(dir.getPath().startsWith(BaseDirectory+File.separator+folder)){
res=true; …
Run Code Online (Sandbox Code Playgroud) 我遇到了以下命令,几乎可以满足我的需求:
find . -type f -print0 | xargs -0 ls -l | sort -k5,5rn > ~/files.txt
现在,我不知道这意味着什么(会喜欢解释,但不是那么重要).
我需要添加的一件事是不要打扰特定的文件夹(即我有一个包含成千上万个Word文档的Documents文件夹,这使得这个命令需要很长时间).
任何人都可以建议添加上面的命令,找到忽略给定的文件夹?