我正在尝试读取某个程序正在使用的所有日志文件行。
当我尝试这样做时,我收到异常:
System.IO.IOException was unhandled : file used by another process
Run Code Online (Sandbox Code Playgroud)
所以我在网上搜索并找到了许多解决方案:
C# 异常。另一个进程
正在使用文件 读取另一个进程正在使用的日志
文件 在 C# 中读取锁定文件的侵入性最小的方法是什么(可能在不安全模式下)?
C#进程无法访问文件''',因为它正在被另一个进程使用
文件正在被另一个进程使用
http://coding.infoconex.com/post/2009/04/21/How-do-I-open -a-file-that-is-in-use-in-C
常见的解决方案是使用using包装FileStream和添加FileShare.ReadWrite.
我尝试了这些解决方案,但我仍然收到另一个进程正在使用该文件的异常。
在我下面的代码中,我打开文件D:\process.log以使用该文件(用于测试),然后尝试打开该文件。
例外是在行:
using (FileStream fileStream = File.Open(i_FileNameAndPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
Run Code Online (Sandbox Code Playgroud)
代码:
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
DialogResult dialogResult = openFileDialog.ShowDialog();
if (dialogResult == DialogResult.OK)
{
listView.Items.Clear();
File.Open(@"D:\process.log", FileMode.Open); //make the file being used …Run Code Online (Sandbox Code Playgroud) 我有一个包含@""@在其中的脚本:
$myHtml = @"
<html>
...
</html>
"@
Run Code Online (Sandbox Code Playgroud)
我想将所有这个脚本转换为字符串@""@转换为变量.
这是我试过的:
$string = @"
$myHtml = @"
<html>
...
</html>
"@
"@
Run Code Online (Sandbox Code Playgroud)
我可以通过读取字符串中的字节并将其转换为ASCII来执行解决方法:
# Read the entire file to an array of bytes.
$bytes = [System.IO.File]::ReadAllBytes("path_to_my_script")
# Convert to a text assuming ASCII encoding.
$text = [System.Text.Encoding]::ASCII.GetString($bytes)
Run Code Online (Sandbox Code Playgroud)
但我想学习如何用内部封装脚本@""@与外部@""@.
我想在Dockerfile中输出以下文本:
*****first row *****
*****second row *****
Run Code Online (Sandbox Code Playgroud)
一种方法是这样做:
cat > Dockerfile <<EOF
FROM alpine:latest
RUN echo ' *****first row ***** ' >> /home/myfile
RUN echo ' *****second row ***** ' >> /home/myfile
ENTRYPOINT cat /home/myfile; sh;
WORKDIR /home
EOF
Run Code Online (Sandbox Code Playgroud)
但是,如果我有100行,则需要花费时间,因为它分别运行每个命令并将其作为一层。
其他方式是这样的:
FROM alpine:latest
RUN printf ' *****first row ***** \n *****second row ***** \n' >> /home/myfile
ENTRYPOINT cat /home/myfile; sh;
WORKDIR /home
Run Code Online (Sandbox Code Playgroud)
但我不喜欢它,因为它使可读性降低,尤其是当您有100行时。
我不知道有没有办法做这样的事情:
FROM alpine:latest
RUN echo ' *****first row *****
*****second row ***** ' >> /home/myfile
ENTRYPOINT cat …Run Code Online (Sandbox Code Playgroud) 我在一个大型项目中使用一个名为“ yaegi ”的开源项目。
\n我需要使用旧版本的“yaegi”:,v.0.8.11所以我修改了go.mod文件并将:
\n替换github.com/traefik/yaegi v0.9.2 // indirect为github.com/containous/yaegi v0.8.11
\n但是当我构建项目时,它开始更新所有模块并将其替换回最新版本:
root@ubuntu:~/myproj1# go build main.go\ngo: finding module for package github.com/traefik/yaegi/stdlib/unsafe\ngo: finding module for package github.com/traefik/yaegi/stdlib\ngo: finding module for package github.com/traefik/yaegi/interp\ngo: found github.com/traefik/yaegi/interp in github.com/traefik/yaegi v0.9.2\n\nRun Code Online (Sandbox Code Playgroud)\n如何防止它并保留使用旧版本v.0.8.11?
\n我根据https://tip.golang.org/cmd/go/#hdr-Maintaining_module_requirements读到:
\n\n该
\ngo命令本身会自动更新go.mod文件以保持标准格式和语句的准确性require。任何找到不熟悉的导入的 go 命令都会查找包含该导入的模块,并自动将该模块的最新版本添加到 go.mod 中。[\xe2\x80\xa6]
\n任何 go 命令都可以确定缺少模块要求,必须添加 [\xe2\x80\xa6]。
\n
也许有办法绕过它?
\n我正在尝试在单个 YAML 文件中的 Kubernetes 中创建多个角色。
我不确定是否可能。
这是我尝试过的:
cat > ~/tmp/Role.yaml <<EOF
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
namespace: default
name: testRole1
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["pods"]
verbs: ["get", "list"]
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
namespace: default
name: testRole2
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["pods"]
verbs: ["get"]
EOF
kubectl create -f ~/tmp/Role.yaml
Run Code Online (Sandbox Code Playgroud)
它只为我创造了后者 - testRole2。
是否可以在一个 YAML 文件中执行此操作,或者我需要为每个角色创建 YAML 文件?
当我尝试构建 ( go build hello.go) 以下代码时:
// ~/go/src/myproj/hello.go
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
# runtime/internal/atomic
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:13:6: Load redeclared in this block
previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:16:24
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:19:6: Loadp redeclared in this block
previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:22:32
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:25:6: Load64 redeclared in this block
previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:28:26
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:31:6: LoadAcq redeclared in this block
previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:34:27
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:36:6: Xadd redeclared in this block
previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:39:37
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:39:6: Xadd64 redeclared in this block
previous declaration …Run Code Online (Sandbox Code Playgroud) 我想验证我的 ZIP 文件是否具有正确的 CRC-32 校验和。
\n我读到,在 ZIP 文件中,CRC-32 数据位于字节 14 到 17 中:
Offset Bytes Description[30]\n0 4 Local file header signature = 0x04034b50 (read as a little-endian number)\n4 2 Version needed to extract (minimum)\n6 2 General purpose bit flag\n8 2 Compression method\n10 2 File last modification time\n12 2 File last modification date\n14 4 CRC-32 of uncompressed data\n18 4 Compressed size\n22 4 Uncompressed size\n26 2 File name length (n)\n28 2 Extra field length (m)\n30 n File name\n30+n m Extra field …Run Code Online (Sandbox Code Playgroud) go ×2
string ×2
bash ×1
c# ×1
checksum ×1
compilation ×1
crc ×1
crc32 ×1
docker ×1
dockerfile ×1
file ×1
go-build ×1
kubernetes ×1
multiline ×1
powershell ×1
role ×1
yaml ×1
zip ×1