【已解決】想請教一下如果在Ubuntu情況之下Java檔案管理如何解決 [論壇 - Ubuntu 程式設計]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊

(1) 2 »


【已解決】想請教一下如果在Ubuntu情況之下Java檔案管理如何解決
會員四級
註冊日期:
2010/11/7 0:52
所屬群組:
已註冊使用者
等級: 19
HP : 0 / 464
MP : 148 / 17475
EXP: 57
離線
以下是一個Java程式問題, 跟檔案管理有關import java.io.*;
class app14_1
{
public static void main(String args[])throws IOException
{
char data[]=new char[128];
FileReader fr=new FileReader("/usrs/kuuga/Java/test.txt");

int num=fr.read(data);
String str=new String(data, 0, num);
System.out.println("Characters read= "+num);
System.out.println(str);

fr.close();
}
}

而輸出結果竟然是這樣:
Exception in thread "main" java.io.FileNotFoundException: /usrs/kuuga/Java/test.txt (沒有此一檔案或目錄)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at java.io.FileReader.<init>(FileReader.java:58)
at app14_1.main(app14_1.java:7)
當然, 這程式我是看洪維恩先生所著的Java2學習一書, 其中有一個語句FileReader fr=new FileReader("/usrs/kuuga/Java/test.txt");原意是用於MS-Windows才可執行, 但我現在所用的是Ubuntu, 那這個語句我應該如何去改, 才可執行呢?

2014/12/21 12:46
應用擴展 工具箱
回覆: 想請教一下如果在Ubuntu情況之下Java檔案管理如何解決
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 37
HP : 0 / 905
MP : 679 / 30224
EXP: 23
離線
先執行下面的指令,確定是否有這個檔案

$ ls /usrs/kuuga/Java/test.txt -l

一般的狀況下。使用者的家目錄應該在「/home」這個資料夾。

所以你的狀況有可能是「/home/kuuga/Java/test.txt」才對。

你可以執行下面的指令,了解你的家目錄所在路徑。

$ echo $HOME

或是

$ cd ~/
$ pwd

## 更多參考
* 鳥哥的 Linux 私房菜 / 第七章、Linux 檔案與目錄管理
* $ man pwd

Dark.Kiva 寫到:
以下是一個Java程式問題, 跟檔案管理有關import java.io.*;
class app14_1
{
public static void main(String args[])throws IOException
{
char data[]=new char[128];
FileReader fr=new FileReader("/usrs/kuuga/Java/test.txt");

int num=fr.read(data);
String str=new String(data, 0, num);
System.out.println("Characters read= "+num);
System.out.println(str);

fr.close();
}
}

而輸出結果竟然是這樣:
Exception in thread "main" java.io.FileNotFoundException: /usrs/kuuga/Java/test.txt (沒有此一檔案或目錄)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at java.io.FileReader.<init>(FileReader.java:58)
at app14_1.main(app14_1.java:7)
當然, 這程式我是看洪維恩先生所著的Java2學習一書, 其中有一個語句FileReader fr=new FileReader("/usrs/kuuga/Java/test.txt");原意是用於MS-Windows才可執行, 但我現在所用的是Ubuntu, 那這個語句我應該如何去改, 才可執行呢?

2014/12/21 12:52
應用擴展 工具箱
回覆: 想請教一下如果在Ubuntu情況之下Java檔案管理如何解決
會員四級
註冊日期:
2010/11/7 0:52
所屬群組:
已註冊使用者
等級: 19
HP : 0 / 464
MP : 148 / 17475
EXP: 57
離線
我嘗試了 ls /usrs/kuuga/Java/test.txt -l又或者 ls /home/kuuga/Java/test.txt -l, 其結果顯示出:
ls: 無法存取 /home/kuuga/Java/test.txt: 沒有此一檔案或目錄
但當我直接打開有關的資料夾時, 該檔案test.txt反而存在, 那我應該怎麼辦呢?

2014/12/21 13:15
應用擴展 工具箱
回覆: 想請教一下如果在Ubuntu情況之下Java檔案管理如何解決
會員四級
註冊日期:
2010/11/7 0:52
所屬群組:
已註冊使用者
等級: 19
HP : 0 / 464
MP : 148 / 17475
EXP: 57
離線
此外, 我再用Touch這個指令時(用的是Touch<檔案名稱>時, 就找不到有關test.txt, 那是不是我其實是根本沒有建立有關檔案而找不到test.txt檔案呢?

2014/12/21 13:29
應用擴展 工具箱
回覆: 想請教一下如果在Ubuntu情況之下Java檔案管理如何解決
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 37
HP : 0 / 905
MP : 679 / 30224
EXP: 23
離線
Dark.Kiva 寫到:
我嘗試了 ls /usrs/kuuga/Java/test.txt -l又或者 ls /home/kuuga/Java/test.txt -l, 其結果顯示出:
ls: 無法存取 /home/kuuga/Java/test.txt: 沒有此一檔案或目錄
但當我直接打開有關的資料夾時, 該檔案test.txt反而存在, 那我應該怎麼辦呢?


你用什麼打開?你先確定哪個路徑是否真的是「/home/kuuga/Java/test.txt」。

另外你執行

$ echo $Home

或是

$ cd ~/
$ pwd

的結果是什麼?

2014/12/21 13:48
應用擴展 工具箱
回覆: 想請教一下如果在Ubuntu情況之下Java檔案管理如何解決
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 37
HP : 0 / 905
MP : 679 / 30224
EXP: 23
離線
當你執行下面的指令

$ touch /home/kuuga/Java/test.txt

若沒有「/home/kuuga/Java/test.txt」這個檔案存在,就會產生一個空的檔案「/home/kuuga/Java/test.txt」。

但是若你這個資料夾「/home/kuuga/Java/」一開始就不存在。

執行上面的指令,就會出現下面的提示訊息。

touch: cannot touch ‘/home/kuuga/Java/test.txt’: No such file or directory

你可以執行下面的指令產生「/home/kuuga/Java/」這個資料夾

$ mkdir /home/kuuga/Java/ -p



$mkdir ~/Java -p

假設你的家目錄是「/home/kuuga」

## 更多參考

* $ man mkdir
* $ man touch
* $ man ls


另外要注意的,在Unix系統,路徑(檔名或資料夾),大小寫有差。


Dark.Kiva 寫到:
此外, 我再用Touch這個指令時(用的是Touch<檔案名稱>時, 就找不到有關test.txt, 那是不是我其實是根本沒有建立有關檔案而找不到test.txt檔案呢?

2014/12/21 13:58
應用擴展 工具箱
回覆: 想請教一下如果在Ubuntu情況之下Java檔案管理如何解決
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 37
HP : 0 / 905
MP : 679 / 30224
EXP: 23
離線
你這段程式碼,我編譯過,也執行過,是正常的。

當然我改過那個路徑
將「/usrs/kuuga/Java/test.txt」
改成「/tmp/test.txt」。

$ echo test > /tmp/test.txt

也確定那個檔案是存在的

$ ls /tmp/test.txt -l

所以你要確認的,應該是你要測試的檔案「/usrs/kuuga/Java/test.txt」是否存在。

我上面有提到,理論上應該會是在「/home/kuuga/Java/test.txt」 。

一般不會有「/usrs」這個資料夾,除非你自己建立的。

但應該會有這個資料夾「/usr」。

報告完畢



Dark.Kiva 寫到:
以下是一個Java程式問題, 跟檔案管理有關import java.io.*;
class app14_1
{
public static void main(String args[])throws IOException
{
char data[]=new char[128];
FileReader fr=new FileReader("/usrs/kuuga/Java/test.txt");

int num=fr.read(data);
String str=new String(data, 0, num);
System.out.println("Characters read= "+num);
System.out.println(str);

fr.close();
}
}

而輸出結果竟然是這樣:
Exception in thread "main" java.io.FileNotFoundException: /usrs/kuuga/Java/test.txt (沒有此一檔案或目錄)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at java.io.FileReader.<init>(FileReader.java:58)
at app14_1.main(app14_1.java:7)
當然, 這程式我是看洪維恩先生所著的Java2學習一書, 其中有一個語句FileReader fr=new FileReader("/usrs/kuuga/Java/test.txt");原意是用於MS-Windows才可執行, 但我現在所用的是Ubuntu, 那這個語句我應該如何去改, 才可執行呢?

2014/12/21 17:45
應用擴展 工具箱
回覆: 想請教一下如果在Ubuntu情況之下Java檔案管理如何解決
管理員
註冊日期:
2011/3/11 6:32
所屬群組:
討論區管理群
等級: 44
HP : 216 / 1084
MP : 1088 / 39742
EXP: 38
離線
Dark.Kiva 寫到:
Exception in thread "main" java.io.FileNotFoundException: /usrs/kuuga/Java/test.txt (沒有此一檔案或目錄)

對方系統內的路徑除非是全 GNU/Linux 系統通用(比方說 /tmp/test.txt )或是於先前的說明中有要求自己建立否則的話都要自行代換(substitute)成自己環境適用且存取得到的路徑

於此例很明顯:

* usrs -> 使用者們(users)
* kuuga -> 執行程式的使用者帳號主目錄(kuuga 使用者的檔案)
* Java -> 因為這是 Java 教材的檔案
* test -> 測試用檔案

因此於您的環境下合理的代換方式應為改為 "/home/〈您的家目錄目錄〉/Java/test.txt" (或任何您覺得更適合放 test.txt 的路徑),先前不存在的母層(Java/)目錄要先建好、如果是檔案讀取操作的話 test.txt 檔案也要先建好(寫入檔案的話不一定,看 API 怎麼處理這個問題),就醬。

2014/12/21 19:17
本篇發表文章以「創用CC BY 3.0 或更新之台灣地區版本」授權條款釋出,如何使用敬請參考
 Creative Commons — 姓名標示 3.0 台灣 — CC BY 3.0 TW
 http://creativecommons.org/licenses/by/3.0/tw/

「你不懂的東西就不要亂講,被懂得人看破手腳就算了,騙不懂的人誤導別人,還要別人把你當成大師,這就真的是說不過去了。」
 by Allen Own
 出處 http://www.plurk.com/p/i4uogm

自由知識創作平台介紹
 https://docs.google.com/document/d/1MGG6lW_0qCgH4U785R-IwSc_INdoBGej1l-JxiA4gPE
如何建立新的自由知識創作平台文件
 https://docs.google.com/document/d/11NdzOW2lGYksfyQIcPMPye5tlmj1J0QTkgPTmQvIvKA
應用擴展 工具箱
回覆: 想請教一下如果在Ubuntu情況之下Java檔案管理如何解決
會員四級
註冊日期:
2010/11/7 0:52
所屬群組:
已註冊使用者
等級: 19
HP : 0 / 464
MP : 148 / 17475
EXP: 57
離線
那如果我將這個指令:
FileReader fr=new FileReader("/usrs/kuuga/Java/test.txt");
改為
FileReader fr=new FileReader("test.txt");

在Linux來說不知道可不可以解決問題呢?

2014/12/22 13:11
應用擴展 工具箱
回覆: 想請教一下如果在Ubuntu情況之下Java檔案管理如何解決
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 37
HP : 0 / 905
MP : 679 / 30224
EXP: 23
離線
Orz..

不太懂你想要得到什麼解答?

你就嘗試修改一下你的原始碼?
然後執行下面的指令

$ echo test > test.txt
$ javac test.java
$ java app14_1

就會得到答案了
應該花不了你多少時間。
而且也不會讓你的系統爆炸,或是電腦起火。
就勇敢的去「試誤學習」吧



鳥哥的 Linux 私房菜 / 第七章、Linux 檔案與目錄管理 / 1.1 相對路徑與絕對路徑


Dark.Kiva 寫到:
那如果我將這個指令:
FileReader fr=new FileReader("/usrs/kuuga/Java/test.txt");
改為
FileReader fr=new FileReader("test.txt");

在Linux來說不知道可不可以解決問題呢?

2014/12/22 14:10
應用擴展 工具箱

(1) 2 »

 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.