cuốn sách gpt4 ai đã làm

Quá trình không thể truy cập tệp vì nó đang được sử dụng bởi một quá trình khác trong cuộc gọi thứ hai

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 12:12:08 31 4
mua khóa gpt4 Nike

Tôi có hàm Azure (HttpTrigger) tạo tệp tar.gz trong bộ lưu trữ Azure của tôi.

Khi tôi kích hoạt nó một lần, tệp sẽ được tạo thành công. Nhưng nếu tôi nhấp vào nó lần nữa thì tôi gặp lỗi:

[Thông tin] Quá trình này không thể truy cập tệp 'D:\local\Temp\myDir\tarArchive.tar.gz' vì nó đang được sử dụng bởi một quy trình khác.

Tôi phải khởi động lại chức năng trong cổng Azure để tạo một tệp khác.

Đây là mã của tôi:

FileStream fs = FileStream mới(myDir+"/firstFile", FileMode.Create);
fs.Write(bytesToCompress, 0, bytesToCompress.Length);
fs.Dispose();
FileStream sfs = FileStream mới(myDir + "/secondfile", FileMode.Create);
sfs.Dispose();

DirectoryInfo DirectoryOfFilesToBeTarred = new DirectoryInfo(myDir);
FileInfo[] filesInDirectory = DirectoryOfFilesToBeTarred.GetFiles();

chuỗi tarArchiveName = myDir + "/tarArchive.tar.gz";

sử dụng (Stream targetStream = new GZipOutputStream(File.Create(tarArchiveName)))
{
sử dụng (TarArchive tarArchive = TarArchive.CreateOutputTarArchive(targetStream, TarBuffer.DefaultBlockFactor))
{
foreach(FileInfo fileToBeTarred trong filesInDirectory)
{
log.Info(fileToBeTarred.FullName);
Mục nhập TarEntry = TarEntry.CreateEntryFromFile(fileToBeTarred.FullName);
tarArchive.WriteEntry(entry, true); // Lỗi được đưa ra ở đây

}
}
}

Tôi nghĩ fileToBeTarred vẫn đang được sử dụng khi gọi lại hàm (tôi có nhầm không?) nhưng tôi đã thử tạo một luồng từ FileInfo này để Dispose() nó, nhưng điều đó không giải quyết được vấn đề của tôi. Tôi cũng đã thử Xóa() nhưng không có tác dụng gì.

Có ai nhìn thấy điều gì đó mà tôi không thấy không?

谢谢你的帮助

gia hạn

Đây là mã đã sửa do Wim Coenen đưa ra

sử dụng (Stream fileStream = File.Create(tarArchiveName))
sử dụng (Stream targetStream = new GZipOutputStream(fileStream))
sử dụng (TarArchive tarArchive = TarArchive.CreateOutputTarArchive(targetStream, TarBuffer.DefaultBlockFactor))
{
foreach (FileInfo fileToBeTarred trong filesInDirectory)
{
log.Info(fileToBeTarred.FullName);
Mục nhập TarEntry = TarEntry.CreateEntryFromFile(fileToBeTarred.FullName);
tarArchive.WriteEntry(entry, true); // Lỗi được đưa ra ở đây
}
}

Và nhật ký lỗi (e = Đối tượng ngoại lệ) e.message =>

2018-08-01T11:59:46.887 [Thông tin] Quá trình không thể truy cập tệp 'D:\local\Temp\myDir\tarArchive.tar.gz' vì nó đang được sử dụng bởi một quy trình khác.

e.ToString() =>

2018-08-01T11:59:47.152 [Thông tin] System.IO.IOException: Quá trình này không thể truy cập tệp 'D:\local\Temp\myDir\tarArchive.tar.gz' vì nó đang được sử dụng bởi một quy trình khác.

tại System.IO.__Error.WinIOError(Int32 errorCode, String mightFullPath)

tại System.IO.FileStream.Init(đường dẫn chuỗi, chế độ FileMode, quyền truy cập FileAccess, quyền Int32, quyền sử dụng Boolean, chia sẻ FileShare, bộ đệm Int32Size, tùy chọn FileOptions, SECURITY_ATTRIBUTES secAttrs, chuỗi msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)

tại System.IO.FileStream..ctor (Đường dẫn chuỗi, chế độ FileMode, quyền truy cập FileAccess, chia sẻ FileShare)

tại ICSharpCode.SharpZipLib.Tar.TarArchive.WriteEntryCore(TarEntry sourceEntry, Boolean recurse)

tại ICSharpCode.SharpZipLib.Tar.TarArchive.WriteEntry(TarEntry sourceEntry, Boolean recurse)

tại UploadFileFromBCText.Function1.d__4.MoveNext()

câu trả lời hay nhất

Có vẻ như bạn không tạo nó trong Bộ lưu trữ Azure mà trên đĩa cục bộ của phiên bản Ứng dụng Chức năng. Đây có lẽ không phải là một ý tưởng hay vì các phiên bản chỉ tồn tại trong thời gian ngắn và sẽ không lưu giữ các tệp của bạn lâu dài.

Thay vào đó, hãy kiểm tra Liên kết đầu ra lưu trữ Azure Blob - Mục đích của nó là lưu trữ các tệp trong Azure Storage mà không cần sử dụng API hoặc SDK tệp cấp thấp.

Về C# - Quá trình không thể truy cập tệp vì nó đang được một quá trình khác sử dụng trong cuộc gọi thứ hai, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/51630372/

31 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress