我有一个非常基本的问题,但不知何故,这让我感到困惑.通常要检查文件和目录是否存在我们可以通过使用布尔来做到这一点file.exists()
但是我想知道,有没有办法可以确定给定的路径是目录还是文件.
如果你能用java提供一些简短的例子,那就太好了.
我在索引(pieces_path)中有这个
<%= form_tag (upload_pieces_path) do%>
<%= file_field_tag 'data' %>
<%= submit_tag %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
而这在片段控制器中
def upload
file_data = params[:data]
File.read(file_data, 'r') do |file|
file.each do |line|
## .... ##
end
end
redirect_to pieces_path
end
Run Code Online (Sandbox Code Playgroud)
最后的路线
match '/upload_pieces', to: 'pieces#upload', via: 'post'
Run Code Online (Sandbox Code Playgroud)
想法是在视图中读取文件,然后对他做一些事情,而不是将其保存在数据库中,然后返回上一页.
但是当我测试它时,我上传文件时收到"没有这样的文件或目录"错误.
有什么想法吗?我做错了什么?
我正在读取和写入一些文本文件,并且当前正在使用设定路径。如何更改该设置路径以使用可执行文件所在的同一文件夹?
例如:
File.ReadLines(@"D:\Users\MyUserName\Desktop\MyApplication\names.txt").Skip(1).ToList();
Run Code Online (Sandbox Code Playgroud)
和...
File.WriteAllLines(@"D:\Users\MyUserName\Desktop\MyApplication\names.txt", lines);
Run Code Online (Sandbox Code Playgroud)
和...
using (StreamWriter writer = new StreamWriter(@"D:\Users\MyUserName\Desktop\MyApplication\names.txt", true))
{
writer.WriteLine(myText);
}
Run Code Online (Sandbox Code Playgroud)
在 IDE (Visual Studio) 中测试时它也需要工作。
因不清楚问题而终止吗?所以我有答案吗?
需要在Windows资源管理器中单击文件上的鼠标左键,您会收到一条包含完整文件路径的消息。
示例:如果单击文件win.ini上的鼠标,则显示MsgBox:c:\ windows \ win.ini
OBS:拜托,我需要准备好示例答案,因为我的英语太糟糕了,而且我是编程的新手。
autohotkey windows-explorer capture filepath file-properties
我需要在Scala中创建一些包含空格的Windows文件路径到字符串文字中.我已经尝试用双引号包装整个路径并用双引号将整个路径包装起来,每个目录名都有一个带单引号的空格.现在它想在两个地方都想要一个"\ Jun"的转义字符,我不知道为什么.
以下是字符串:
val input = "R:\'Unclaimed Property'\'CT State'\2015\Jun\ct_finderlist_2015.pdf"
val output = "R:\'Unclaimed Property'\'CT State'\2015\Jun"
Run Code Online (Sandbox Code Playgroud)
这是最新的错误:

我正在使用 Filepath.Walk in Go 尝试以递归方式获取 C: 下的所有文件夹。然而,它只返回以 $Recycle.Bin 开头的子文件夹。我在这里做错了什么?
package main
import (
"fmt"
"path/filepath"
"os"
)
func main() {
array := Subfolders("C:")
for _,value := range array {
fmt.Println(value)
}
}
func Subfolders(path string) (paths []string) {
filepath.Walk(path, func(newPath string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if info.IsDir() {
paths = append(paths, newPath)
}
return nil
})
return paths
}
Output:
C:
C:\$Recycle.Bin
C:\$Recycle.Bin\S-1-5-21-310629982-3373693989-3733510080-1000
C:\$Recycle.Bin\S-1-5-21-310629982-3373693989-3733510080-1000\$R0L9M20
C:\$Recycle.Bin\S-1-5-21-310629982-3373693989-3733510080-1000\$R22ZOD9
C:\$Recycle.Bin\S-1-5-21-310629982-3373693989-3733510080-1000\$R3LS9P4
C:\$Recycle.Bin\S-1-5-21-310629982-3373693989-3733510080-1000\$R4T2IGU
C:\$Recycle.Bin\S-1-5-21-310629982-3373693989-3733510080-1000\$R8TZIET
C:\$Recycle.Bin\S-1-5-21-310629982-3373693989-3733510080-1000\$R9QQZB9
C:\$Recycle.Bin\S-1-5-21-310629982-3373693989-3733510080-1000\$RA71HY3 …Run Code Online (Sandbox Code Playgroud) 我想知道是否可以在JavaFX中使用Filechooser来查找文件,然后当我在Filechooser中单击“打开”时,它将以某种方式将该文件的文件路径记录为String吗?
我已经在网上四处寻找有关如何执行此操作的信息,但是没有看到任何解释。如果有人可以向我展示一些示例代码,将不胜感激:)
我知道这个问题已被多次回答,而且除了一个以外,我所用的解决方案几乎适用于所有情况.
有问题的代码是这样的:
Path.GetFullPath(Path.Combine(rootFolder, relativeFilePath))
Run Code Online (Sandbox Code Playgroud)
即使使用凌乱的相对路径,UNC和绝对路径,它在大多数情况下都能正常工作,如下所示:
// These results are OK
Path.GetFullPath(Path.Combine(@"a:\b\c", @"e.txt")); // Returns: "a:\b\c\e.txt"
Path.GetFullPath(Path.Combine(@"a:\b\c", @"..\e.txt")); // Returns: "a:\b\e.txt"
Path.GetFullPath(Path.Combine(@"a:\b\c", @"d:\e.txt")); // Returns: "d:\e.txt"
Run Code Online (Sandbox Code Playgroud)
但是在这种情况下,它不能按预期工作:
Path.GetFullPath(Path.Combine(@"a:\b\c", @"\e.txt"))
Run Code Online (Sandbox Code Playgroud)
预期的结果是"a:\ e.txt",但代码返回"c:\ e.txt"."c:"是当前的驱动器所以它解决了拼图的一部分,但为什么会发生这种情况?有没有其他方法可以获得适用于所有情况的完整路径?
编辑:根据答案的信息,这里是有效的解决方案.可能需要一些空检查和替代目录分隔符char检查:
var rootDir = @"a:\b\c";
var filePath = @"\e.txt";
var result = (Path.IsPathRooted(filePath) &&
Path.GetPathRoot(filePath) == Path.DirectorySeparatorChar.ToString()) ?
Path.GetFullPath(Path.Combine(Path.GetPathRoot(rootDir), filePath.Substring(1))) :
Path.GetFullPath(Path.Combine(rootDir, filePath));
Run Code Online (Sandbox Code Playgroud) 我对rsync的创建路径有问题。
x := filepath.Join("home", "my_name", "need_folder", ".")
fmt.Println(x)
Run Code Online (Sandbox Code Playgroud)
我得到了"home/my_name/need_folder",但是需要"home/my_name/need_folder/.",没有concat怎么解决?在名称为“。”的linux文件夹中。不是不可能。
谢谢!
就像有问题。以下是我必须处理跨平台路径时使用的代码。有没有比这更好的方法了?
import platform
my_os = platform.system()
if my_os == "Windows":
slash = "\\"
else:
slash = "/"
Run Code Online (Sandbox Code Playgroud)
代码中的随机示例:
source_path = ""
for part in __file__.split("/")[:-1]:
source_path += (part + slash)
print(source_path)
Run Code Online (Sandbox Code Playgroud) filepath ×10
c# ×2
file ×2
go ×2
path ×2
autohotkey ×1
capture ×1
dir ×1
escaping ×1
file-upload ×1
filechooser ×1
java ×1
javafx ×1
python ×1
python-3.x ×1
ruby ×1
scala ×1
streamreader ×1
streamwriter ×1
windows ×1