- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想打开一个唯一命名的输出文件来写入 plist 或数据,但没有运气使用 init(fileURLWithPath:) 或 init(string:) 的 URL 例程获取句柄
func NewFileHandleForWritingFile(path: String, name: String, type: String, outFile: inout String?) -> FileHandle? {
let fm = FileManager.default
var file: String? = nil
var uniqueNum = 0
while true {
let tag = (uniqueNum > 0 ? String(format: "-%d", uniqueNum) : "")
let unique = String(format: "%@%@.%@", name, tag, type)
file = String(format: "%@/%@", path, unique)
if false == fm.fileExists(atPath: file!) { break }
// Try another tag.
uniqueNum += 1;
}
outFile = file!
do {
let fileURL = URL.init(fileURLWithPath: file!)
let fileHandle = try FileHandle.init(forWritingTo: fileURL)
print("\(file!) was opened for writing")
//set the file extension hidden attribute to YES
try fm.setAttributes([FileAttributeKey.extensionHidden: true], ofItemAtPath: file!)
return fileHandle
} catch let error {
NSApp.presentError(error)
return nil;
}
}
调试器显示
对于这个 URL init 例程添加了方案 (file://),但在其他方面与另一个相同,我更喜欢使用路径时抛出 reutrning (-1) 的更新方法。抛出的错误 (2) 是一个 ENOENT(没有这样的实体!?),因为我需要一个句柄来写入 我很困惑怎么才能得到一个?示例路径是在桌面上创建的一个新文件夹,用于分类。
最佳答案
与之前的答案不同,我建议使用 Data 的 write(to:options:)
API 而不是 FileManager 的 createFile(atPath:contents:attributes:)
,因为它是基于 URL 的 API,通常优于基于路径的 API。 Data 方法还会抛出错误,而不是在失败时返回 false,因此如果出现问题,您可以告诉用户原因。
尝试 Data().write(to: fileURL, options: [])
我还建议将基于路径的 FileManager.fileExists(atPath:)
替换为基于 URL 的 checkResourceIsReachable()
:
if false == ((try?fileURL.checkResourceIsReachable()) ?? false)
关于swift - FileHandle 不接受我的 URL 进行写访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45684329/
我尝试添加、删除 FileHandler,但不起作用。此外,在现有 FileHandler 中更改 (URL) 后,该 url 仍然指向旧 URL。现有的 FileHandler 工作正常,但没有选择
我正在尝试禁用日志轮转,以供文件处理程序使用, FileHandler fh = new FileHandler ( "path" + "run.log", 1000000, 1, false
我了解当达到特定大小时 Java FileHandler 如何滚动到下一个日志文件。我想要的有点不同。我想使用 FileHandler 在程序启动时使用序列中最后写入时间最早的日志文件。 例如,如果我
我正在使用jdk日志记录,并且我在logging.properties中有以下内容: handlers= java.util.logging.FileHandler .level= INFO java
我想在线程完成或强制完成后关闭所有 FileHandler。 我创建了一个 closeLogger 函数,但它似乎没有被调用 因为我看到文件仍然锁定在文件夹中。 有什么问题? 在eclipse中强行终
我有以下代码: func syncShellExec(path: String, args: [String] = []) { let process = Process
我正在尝试使用 fs.open 和 FileHandle 在 Node 中逐字节读取二进制文件。使用 FileHandle.read(buffer, offset, length, position)
我正在使用 Python 日志记录包,我需要记录两种类型的消息: 仅应登录到标准输出的消息 应该只记录到文件中的消息。 但是我无法实现它。这是我的代码: import logging
假设我有一个 4GB 的文件需要处理,在 Perl 中有没有一种方法可以像数组一样引用文件句柄,而无需将其复制到实际的数组/内存中? 类似于: open (LOG, "less file.txt |"
我需要为 websphere 应用程序服务器 9 上安装和运行的每个应用程序生成一个日志文件。我使用 JUL 来生成日志文件。我的解决方案是创建一个继承自 FileHandler 的特定类,并通过配置
我有一个看起来像这样的代码: let fileName = "name.txt" let fileURL = URL(fileURLWithPath: NSTemporaryDirectory()).
我部署了一个servlet。我对生成的日志文件有点困惑。特别是我不知道该看哪一个。 使用相同的数据生成了多个。 我正在使用以下代码来初始化我的文件处理程序。 Logger logger = Logge
我不明白为什么 tell() 函数在这种情况下不起作用。让我们创建一个包含字符串“1\n2\n3\n4\n”的文件: f=open('test.tmp','w') f.write('1\n2\n3\n
我有一个日志配置文件: logger_config.yml version: 1 formatters: simple: format: '%(asctime)s - %(levelnam
我正在尝试将所有过度使用的打印更改为日志记录。*主要是因为我想要一个日志文件。 logger = logging.getLogger(__name__) formatter = logging.For
Java 日志记录配置文件让我可以定义命名记录器的属性,例如 name.heikoseeberger.heikotron.level = FINE name.heikoseeberger.heikot
我正在创建一个允许循环访问文件的 java.util.logging.FileHandler。当我的应用程序的多个实例运行时,将为应用程序的每个实例创建一个新的日志文件。我需要知道应用程序正在使用什么
我正在考虑使用 Java 日志记录和 FileHandler 在 J2EE 网络应用程序中记录业务事件。 我想知道这是否会导致性能瓶颈,因为许多日志记录将写入一个文件。 您的经验和意见是什么? 使用
我正在尝试使用 Pipe的 fileHandleForReading的 readabilityHandler阅读 standardOutput和 standardError的 Process .然而,
我正在尝试在多处理服务器中实现日志记录。根据文档,“不支持从多个进程记录到单个文件”。我创建了一个小程序来检查这个语句: import logging import multiprocessing i
我是一名优秀的程序员,十分优秀!