2014-12-15 12 views
5

Mở tệp bằng java có vẻ hơi phức tạp - đối với tệp .txt phải sử dụng đối tượng Tệp kết hợp với đối tượng Máy quét hoặc BufferedReader - đối với hình ảnh IO, bạn phải sử dụng ImageIcon lớp - và nếu một là theo nghĩa đen mở một tài liệu .txt (giống như cách nhấp đúp vào ứng dụng) từ java, mã này dường như làm việc:Mở bất kỳ tệp nào từ bên trong chương trình java

import java.io.*; 

public class LiterallyOpenFile { 
    public static void main(String[] args) throws IOException { 
     Runtime rt = Runtime.getRuntime(); 
     Process p = rt.exec("notepad Text.txt"); 
    } 
} 

tôi không tích cực, nhưng tôi nghĩ rằng tập tin khác -types/tên có thể được thay thế trong dấu ngoặc đơn sau khi exec - dù sao, tôi có kế hoạch mở một số tệp trong JFileChooser khi người dùng nhấp vào tệp để mở (khi người dùng nhấp vào tệp, đường dẫn đến tệp có thể thu được bằng phương thức getSelectedFile()). Mặc dù tôi đặc biệt tìm cách để có thể mở một tập tin Arduino trong IDE Arduino từ một chương trình java, giống như một cú nhấp đúp được mô phỏng .. có lẽ một cái gì đó như thế này?

import java.io.*; 

public class LiterallyOpenFile { 
    public static void main(String[] args) throws IOException { 
     Runtime rt = Runtime.getRuntime(); 
     Process p = rt.exec("Arduino C:\\Arduino\\fibonacci_light\\fibonacci_light.ino"); 
    } 
} 

Điểm đúng hướng sẽ được đánh giá cao.

+2

Trên Windows, bạn luôn có thể sử dụng 'start' để mở bất kỳ tập tin sử dụng assocation tập tin mặc định của nó. Vì vậy, thay vì 'notepad' hoặc 'arduino' hoặc những gì không, thay thế tất cả chúng bằng' start'. –

Trả lời

4

Bạn đã thử cái này chưa? Nếu có một chương trình đã đăng ký cho tệp của bạn trong cửa sổ, điều này sẽ hoạt động. (ví dụ: ứng dụng mặc định sẽ mở tệp)

Desktop desktop = Desktop.getDesktop(); 
desktop.open(file); 

Tham số tệp là đối tượng File.

Link to API

Link to use cases and implementation example of the Desktop class

+1

@Woodrow Tôi không chắc chắn nếu bạn đang châm biếm câu trả lời này, nhưng theo như tôi hiểu câu hỏi của bạn, đây là câu trả lời đúng. đọc lên tài liệu của lớp Desktop: https: //docs.oracle.com/javase/7/docs/api/java/awt/Desktop.html –

+0

@Christian R. Không phải là mỉa mai, chỉ là một cái gì đó kỳ lạ liên quan đến các tệp arduino : http://imgur.com/xQaYvy5 có nghĩa là bản thân tệp arduino phải được đặt bên trong một thư mục bên trong màn hình - vì vậy tôi có thể sử dụng lớp Desktop để mở thư mục chứa tệp nhưng không phải tệp trực tiếp. & cảm ơn, tôi có kế hoạch đọc trên lớp Desktop. – Woodrow

+2

bạn trộn thư mục "Desktop" (tên được gọi trong cửa sổ và hệ điều hành khác) với tên lớp, nhưng đối với thử thách của bạn nó hoàn toàn phù hợp - tệp không phải nằm trong thư mục Desktop - tham số có thể là bất kỳ đối tượng tệp nào là: không null, tệp tồn tại, có thể đọc được bởi các ràng buộc bảo mật và có một ứng dụng liên quan có thể được khởi chạy với tệp - nếu bạn lấy đối tượng tệp từ tham số 'JFileChooser.getSelected()' của bạn, bản thân tập tin sẽ được mở bằng ứng dụng liên quan –

Các vấn đề liên quan