Tôi cần phải đặt các tệp và thư mục bị ẩn trên cả Windows và Linux. Tôi biết rằng phụ thêm '.' ở phía trước của một tập tin hoặc thư mục sẽ làm cho nó ẩn trên Linux. Làm cách nào để tạo tệp hoặc thư mục bị ẩn trên Windows?Tạo một Tệp/Thư mục Ẩn trên Windows bằng Java
Trả lời
Đối với Java 6 và dưới đây,
Bạn sẽ cần phải sử dụng một cuộc gọi bản địa, đây là một cách cho các cửa sổ
Runtime.getRuntime().exec("attrib +H myHiddenFile.java");
Bạn nên tìm hiểu một chút về win32-api hoặc Java Native.
Các chức năng mà bạn mong muốn là một tính năng của NIO.2 trong sắp tới Java 7.
Dưới đây là một bài viết mô tả nó như thế nào sẽ được sử dụng cho những gì bạn cần: Managing Metadata (File and File Store Attributes). Có một ví dụ với DOS File Attributes:
Path file = ...;
try {
DosFileAttributes attr = Attributes.readDosFileAttributes(file);
System.out.println("isReadOnly is " + attr.isReadOnly());
System.out.println("isHidden is " + attr.isHidden());
System.out.println("isArchive is " + attr.isArchive());
System.out.println("isSystem is " + attr.isSystem());
} catch (IOException x) {
System.err.println("DOS file attributes not supported:" + x);
}
thuộc tính Setting có thể được thực hiện bằng DosFileAttributeView
Xét những sự kiện này, tôi nghi ngờ rằng có một tiêu chuẩn và cách thanh lịch để thực hiện điều đó trong Java 6 hoặc Java 5.
đây là những gì tôi sử dụng:
void hide(File src) throws InterruptedException, IOException {
// win32 command line variant
Process p = Runtime.getRuntime().exec("attrib +h " + src.getPath());
p.waitFor(); // p.waitFor() important, so that the file really appears as hidden immediately after function exit.
}
Java 7 có thể ẩn nộp DOS theo cách này:
01.Path path = ...;
Boolean hidden = path.getAttribute("dos:hidden", LinkOption.NOFOLLOW_LINKS);
if (hidden != null && !hidden) {
path.setAttribute("dos:hidden", Boolean.TRUE, LinkOption.NOFOLLOW_LINKS);
}
Trước đó, Java không thể.
Đoạn mã trên sẽ không ném ngoại lệ lên các hệ thống tệp không phải của DOS. Nếu tên của tập tin bắt đầu với một khoảng thời gian, sau đó nó cũng sẽ được ẩn trên hệ thống tập tin UNIX.
Phương thức getAttribute (String, LinkOption) là không xác định đối với loại java.nio.file.Path (JDK 7u13) – Antonio
Antonio, nó phải được như vậy trong phiên bản dự thảo của Java 7 mà tôi đã sử dụng. Tôi thấy rằng chức năng tương tự hiện có trong java.nio.file.Files. –
Bạn có thể sử dụng 'Files.setAttribute' để chấp nhận' Đường dẫn' để đặt thuộc tính. –
String cmd1[] = {"attrib","+h",file/folder path};
Runtime.getRuntime().exec(cmd1);
Sử dụng mã này nó có thể giải quyết bạn vấn đề
trên cửa sổ, sử dụng java nio, tập tin
Path path = Paths.get(..); //< input target path
Files.write(path, data_byte, StandardOpenOption.CREATE_NEW); //< if file not exist, create
Files.setAttribute(path, "dos:hidden", Boolean.TRUE, LinkOption.NOFOLLOW_LINKS); //< set hidden attribute
Vui lòng thêm mô tả về cách mã bạn đăng địa chỉ câu hỏi của người dùng – Suever
Đây là một hoàn toàn compilable Java 7 mẫu mã mà giấu một tập tin tùy ý trên Windows .
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.DosFileAttributes;
class A {
public static void main(String[] args) throws Exception
{
//locate the full path to the file e.g. c:\a\b\Log.txt
Path p = Paths.get("c:\\a\\b\\Log.txt");
//link file to DosFileAttributes
DosFileAttributes dos = Files.readAttributes(p, DosFileAttributes.class);
//hide the Log file
Files.setAttribute(p, "dos:hidden", true);
System.out.println(dos.isHidden());
}
}
Để kiểm tra tệp bị ẩn. Nhấp chuột phải vào tệp được đề cập và bạn sẽ thấy sau khi thực thi tòa án rằng tệp được đề cập thực sự bị ẩn.
- 1. Cách ẩn thư mục bằng cách sử dụng java
- 2. Tạo các thư mục ẩn
- 3. Cách tạo thư mục bằng Java?
- 4. Tệp đồng thời viết bằng Java trên Windows
- 5. Cách tạo tệp .po bằng xgettext trên Windows?
- 6. ẩn mục nhập từ Toc bằng latex
- 7. Ẩn các tệp ẩn trong Windows
- 8. Cách ẩn giao diện điều khiển Windows bằng Tkinter python?
- 9. Làm thế nào để lực lượng Java 7 để tạo "thư mục symlinks" trên Windows thay vì "tập tin symlinks"?
- 10. Tạo một tệp trong thư mục userfiles (C#, Windows Forms)
- 11. "Khởi tạo" một Danh sách bằng Java?
- 12. Cách kiểm tra tệp và thư mục ẩn trên phân vùng NTFS bằng python trên linux?
- 13. "Mở bằng ..." một tệp trên Windows, với ứng dụng trăn
- 14. Phương pháp thích hợp để tìm thư mục My Documents của người dùng trên Windows bằng Java?
- 15. Tạo lại cấu trúc thư mục bên trong tệp Zip bằng Java - Các thư mục trống
- 16. Tạo chỉ mục trên DB bằng Hibernate @Index Chú thích
- 17. Ẩn Windows 8 Desktop Icons
- 18. Tạo Thư mục Nén (Nén) bằng Delphi
- 19. Ẩn Mục của một Box Shadow
- 20. Cách tạo dịch vụ windows từ java jar?
- 21. thay đổi thư mục virtualenv trên windows
- 22. Tạo chứng chỉ OpenSSL trên Windows
- 23. Cách tạo bí danh IP trên Windows
- 24. Theo dõi ngăn xếp Java trên Windows
- 25. chạy java trên windows 8 tablet
- 26. Giao tiếp nối tiếp Java trên Windows
- 27. Tạo ra một quá trình nền trong Ruby trên Windows?
- 28. Java: File.toURI(). ToURL() trên tệp Windows
- 29. Ghim một ứng dụng Java bằng cách sử dụng Launch4j vào thanh công cụ Windows 7
- 30. java: Mở thư mục trên nút bấm
"gốc" nghĩa là bạn đang chạy mã nền tảng cụ thể. 'exec()' kích hoạt một hệ vỏ DOS/Windows để thực thi chương trình DOS/Windows. –
Bạn là người bảo vệ cuộc sống !!! –
điều gì sẽ xảy ra khi mã này được thực thi trong Linux? Hoặc làm thế nào để ngăn chặn nó? – Xerus